• Не могу запустить проект в openserver, что делать?

    @Kolli-Jam Автор вопроса
    Начинающий web-разработчик
    Нашел решение. Оказывается я тот еще слоупок :D. Оказалось все это время у меня в браузере был включен vpn, которым я ранее пользовался(ZenMate если что), отключил его - заработало. Дико извиняюсь за глупый вопрос.
    Ответ написан
    5 комментариев
  • Как настроить ngrok + openserver на win 10?

    v_decadence
    @v_decadence
    Так вроде нужно указывать параметр --host-header, чтобы сервер получал Host заголовок для правильной обработки запроса:
    ngrok http --host-header=dev.site.ru 80
    Ответ написан
    3 комментария
  • Messages.getConversations выдает только беседы созданные сообществом а другие беседы не видит, как исправить?

    alexk111
    @alexk111
    Автор Ботодрома (автоматизация Telegram, VK и др.)
    Через вызов `Messages.getConversations` беседы не получить.

    Ловите id'ы бесед в обработчике событий. В оповещении о новом сообщении ВК передает объект сообщения со свойством `peer_id` (это id беседы) - сохраняйте его у себя и используйте в своей логике.

    Если нужно по всем беседам - можно поочередным перебором всех peer_id, начиная с 2000000000 до первой ошибки об отсутствии доступа.
    Ответ написан
    Комментировать
  • Как в Windows 10 запретить администратору доступ к папке другого администратора?

    Vvvyg
    @Vvvyg
    Был админом, сейчас в ТП
    Запрет можно выставить, но с правами администратора его легко убрать.
    Стандартными средствами Windows - никак.
    Ответ написан
    Комментировать
  • Как в Windows 10 запретить администратору доступ к папке другого администратора?

    akelsey
    @akelsey
    Зашифруйте данные EFS, каждый своим ключем (но с осторожностью, обычно все попытки так отгородиться - приводят к печальным последствиям, особенно с EFS т.к. это очень прозрачно и на первый взгляд очень легко и хорошо работает - потом сбрасывают пароль или переустанавливают ОС без сохранениня ключей и всё данных больше нет.)
    Ответ написан
    Комментировать
  • Как добавить в дочерний класс функцию с PDO?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Просто классическая коллекция заблуждений, связанных с бд-врапперами.

    1. Не надо писать функцию select().

    Это какая-то массовая эпидемия: почему-то каждый пользователь похапе в какой-то момент решает, что ему просто невмоготу написать в SQL запросе пару ключевых слов, и решает сделать функцию, которая будет их за него писать. В результате на свет появляются совершенно одинаковые уродцы в виде функции select().

    В итоге из практически натурального английского "выбрать все поля из таблицы пользователей, где логин равен тому-то и пароль тому-то" получаем на выходе непонятные иероглифы, про значение которых автор и сам забудет через пару месяцев.
    $this->db->select('*', 'ftl_workers', "login = ? AND password = ?");

    в этом коде автор экономит себе три слова.
    Вопрос: стоит ли эта экономия читабельности и портируемости?
    Вопрос: а что будет, когда автор узнает о других операторах SQL, таких, как GROUP BY, JOIN и пр.?
    Неужели так сложно написать нормальный SQL запрос:
    $this->db->get('SELECT * FROM ftl_workers WHERE login = ? AND password = ?");

    Если же хочется нормальный квери билдер, то надо взять и посмотреть сначала на существующие. И понять, что квери-билдеры пишутся не для экономии трех слов.

    2. Самые развесистые грабли. Класс бизнес-логики наследует классу БД. ООП же! Надо же что-то наследовать! При этом совсем не приходит автору в голову, что, скажем, пользователь - это не база данных! И нет ни одной причины наследовать первого от второй. БД может присутствовать в классе как сервис. Как свойство. Но не как. праордитель

    3. по какой-то неизвестной причине все поголовно писатели врапперов делают параметры доступа к базе переменными класса. Ну, видимо, чисто для солидности. при этом им не приходит в голову, что переменные
    а) должны приходить из конфига
    б) используются ровно один раз, в одной-единственной функции и больше никак в жизни класса не участвуют.
    Вопрос: какой смысл делать эти параметры переменными класса?

    4. Как всегда, исключение кидается только для того, чтобы ТУТ ЖЕ его поймать и радостно вывалить на экран. И здесь мы опять видим совершенно поголовное убеждение пользователей похапе в том, что они являются единственными и эксклюзивными пользователями своего сайта. Средний похапешник совершенно искренне не понимает, что у сайта могут быть и другие пользователи, которые эти сообщения ни к чему. А сам он не всегда сидит за монитором, чтобы увидеть сообщение об ошибке.
    И это при том, что сам РНР обработает исключение в сто раз лучше - главное просто ему не мешать. Подробнее можно прочитать здесь: phpfaq.ru/pdo#exceptions

    В итоге, без переменных класса, функции Селект и "обработчика" ошибок от класса не остаётся ничего. И это правильно. PDO - это уже дб-враппер, и "расширять" его - только портить. Во всяком случае, начинающим похапешникам настоятельно рекомендуется этого не делать, а научиться сначала пользоваться родным PDO.

    Если уж так уж прям хочется сэкономить одну строчку, то изменения нужны совсем крошечные:
    - надо сделать так, чтобы prepare возвращала statement, и singleton по вкусу.
    получается https://github.com/colshrapnel/thebestpdowrapper
    С нормальным враппером код остаётся читаемым, но в то же время кратким:

    class UserAuth {
        function check($user, $pass) {
            $sql = 'SELECT * FROM ftl_workers WHERE login = ? AND password = ?';
            return DB::prepare($sql)->execute([$user, $pass])->fetch();
        }
    }
    include 'bestpdo.php';
    $ua = new UserAuth();
    $ua->check('admin', 'pqwe');
    Ответ написан
    5 комментариев