• Какая должна быть правильная авторизация?

    @IceJOKER
    Web/Android developer
    главное не храните это в куках, а то можно вручную там прописать auth=1 и вуаля.
    Можете к примеру сохранить id и хеш = пароль + соль, а дальше уже проверять, есть разные варианты.
    СЕССИИ хранятся на вашей стороне, поэтому они более менее безопасны
    Ответ написан
    6 комментариев
  • Где достать обфускатор для сайта, чтобы можно было из php шифровать html содержимое?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Ctrl+Shift+I вы тоже собираетесь обфусцировать? Зачем? Эти данные вы передали клиенту, тот, кто захочет - взломает, остальным мягко говоря насрат*
    Ответ написан
    6 комментариев
  • Есть ли у вас любимый код?

    @enixpp
    #define TRUE FALSE // Happy debugging suckers
    Ответ написан
    Комментировать
  • Зачем нужны отдельные классы для работы с БД?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    На самом деле это интересный вопрос. А, точнее, два: зачем нужен такой класс, и зачем их пишут.
    Ответ на первый становится очевиден, когда начинаешь не смотреть на код, а писать его ;)
    Практически все библиотеки, представленные в РНР, представляют в пользование программиста довольно низкоуровневые функции, которые позволяют, с одной стороны, довольно гибко управлять процессом, но с другой - делают этот процесс ну очень многословным. Самый яркий пример - CURL. Никто, находясь в здравом уме, не будет писать все время эти бесконечные curlopt. Надо пилить библиотеку, которая реализует стандартные методы пост, гет за один вызов, и только для исключительных случаев позволяет задать кастомные параметры.

    То же самое касается и работы с БД. К примеру, очень часто нам бывает нужно получить из БД массив. Сколько строк нужно написать для этого? Классическим говнокодом - 5:
    $ret = array();
    $res = mysql_query();
    while ($row = mysql_fetch_assoc($res)) {
        $ret[] = $row;
    }

    И такой код надо написать раз 15-20 за приложение. У программиста сразу руки зачешутся уничтожить этот повторяющийся код и написать функцию, которой передаешь запрос, а получаешь массив. За 1 вызов. Вот для этого библиотеки и пишут.

    Но в здесь мы подходим ко второй причине. Дело в том, что "классический говнокод" из видеоуроков всегда очень упрощен. Авторы видеоуроков не знают, что для работы с БД надо делать миллион дополнительных действий - от обработки ошибок до защиты от инъекций. И если все эти действия выполнять вручную, то времени больше ни на что не останется - придется снова и снова переписывать одни и те же тонны кода для каждого запроса.

    Возьмем для примера код примера из мануала. Даже выкинув из него очевидные глупости, мы получаем пол-дюжины строк кода. Это на ОДИН запрос.
    if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
        $stmt->bind_param("s", $city);
        $stmt->execute();
        $stmt->bind_result($district);
        $stmt->fetch();
    }

    И это все - чтобы получить единственную строчку!

    В то время как с помощью (нормальной) библиотеки вся работа с БД сведется к 1 (одной) строчке, а все необходимые телодвижения будут выполнены библиотекой автоматически:
    $distr = $db->getOne("SELECT District FROM City WHERE Name=?", $city);

    Теперь перейдем ко второму вопрос - зачем их пишут.
    Самый основной мотив - "шоб було!" "У всех есть - значит, и у меня будет!". При этом, подходя к написанию библиотеки, новички наступают на одни и те же грабли.
    Чаще всего, из-за недостатка опыта авторов, код сокращается только для самых примитивных запросов. Но при этом работа с нестандартными запросами превращается в ад. Но самое ужасное - практически никогда такие самописные библиотеки не поддерживают работу с подготовленными выражениями. А это должно быть их главной фичей, без которых ценность сразу стремится к нулю. А точнее, даже к минусу, потому что инъекции. Ну и по мелочи: к примеру, если в коде действительно написано $db->FetchArray(); - то это ужас, летящий на крыльях ночи, потраченной на отлов неочевидных ошибок .
    Ответ написан
  • (Yii2) Как убрать web с url?

    pro100ShCoder
    @pro100ShCoder
    программист
    вот одно из решений https://github.com/ilopX/yii2-basic-htaccess
    единственно на что обратите внимание - это на директиву Options +FollowSymlinks
    могут некоторые хостеры ругаться - 500 error
    в этом случае можно будет заменить на Options +SymLinksIfOwnerMatch
    Ответ написан
    Комментировать
  • Где взять актуальные курсы валют?

    SagePtr
    @SagePtr
    Еда - это святое
    Перепробовал различные варианты и остановился на этом:
    https://query.yahooapis.com/v1/public/yql?q=select...
    Лимит 2000 запросов в час с одного IP, если не обновлять курс каждую секунду - хватит вполне. Поддерживает XML, JSON, JSONP

    UPD: К сожалению, на данный момент этот сервис прекратил свою работу, а жаль(
    Ответ написан
    3 комментария