Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
  • Как работают сессий в laravel?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    в сессии нет ничего магического.
    это всего лишь кука в браузере и хранилище на сервере, где по ключу из сессии ищется массив с информацией.
    вот и всё.
    реализовать такое руками - дело на 5 минут.
    что Лара и делает.
    session() лезет в куки и берет оттуда ключ. по этому ключу лезет в хранилище (оно может быть любое - база, редис, и т.п.), достаёт из него массив, и из массива достаёт 'key'
    всё просто

    только два более-менее сложных момента
    1. ключ в куку надо писать не абы какой а чтобы нельзя было подобрать. random_bytes в помощь, и подлиннее, штук 20.
    2. чтобы не лазить в хранилище каждый раз, когда надо записать значение в сессию, можно определить функцию, которая вызывается после выполнения скрипта. и в ней уже записывать массив из скрипта в хранилище
    Ответ написан
    2 комментария
  • Какой стек выбрать для бэкэнда?

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

    Нагрузок у него нет, веб-проекта, в котором будет функционал по типу как в Reddit - нет, пользователей нет, рассылок нет, нагрузки даже в 10 пользователей в сутки нет. Как и объяснения, почему пользователи вдруг повалят именно на этот проект.
    Но зато мы уже стррррашно озабочены проблемами с производительностью.
    Поэтому мы убьём в 10 раз больше времени, поднимая на каком-нибудь экзотическом языке прототип, чтобы убедиться что этот проект таки никому не нужен.
    Ответ написан
    4 комментария
  • Возможно ли задать приоритет обработки конкретным таблицам?

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

    Если есть проблема с производительностью некоторых таблиц, то именно её и надо описывать в своём вопросе.

    В частности, статистику обычно копят в редисе, а потом заливают сразу пачкой.
    Также следует учитывать, что insert ignore как раз и тормозит.
    Ответ написан
  • Как в BASH работают логические операторы?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как всегда, в заголовке "Как в работают логические операторы?", а на самом деле вопрос "почему код ошибки 0 интерпретируется как true". "Где логика, где разум?" :)

    В то время как озвученный вопрос и на самом деле интересный.
    Так работают логические операторы не только в баше. В РНР точно так же можно написать
    true /*false*/ and print "Success" or print "Failed";
    и получать тот же самый результат.
    Суть тут в том, что логические операторы делаются "ленивыми". Они не вычисляют тот операнд, который не влияет на конечный результат.
    Соответственно:
    • если операция вернула true, то мы должны выполнить тот операнд, который стоит после and, потому что иначе не сможем получить общий результат операции and. который будет true только если оба операнда вернули true
    • если операция вернула true, то нет смысла выполнять тот операнд, который стоит после or, поскольку его результат ни на что не повлияет - итоговый результат в любом случае будет true, поскольку для or важно чтобы истинным был только один результат. получаем "Success"
    • если операция вернула false, то нам не нужно выполнять тот операнд, который стоит после and, потому что в любом случае результатом будет false
    • если операция вернула false, то мы должны выполнить тот операнд, который стоит после or, поскольку он будет определяющим для всего выражения. получаем "Failed"
    Ответ написан
    Комментировать
  • Как правильно работать со временем в таблице?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Давайте погуглим вместе.
    61b9a68b7d8e7877128953.png

    Совершенно неподъёмное действие для человечка 1998 года рождения.
    Ответ написан
    3 комментария
  • Как безопасно разрешить отправлять ссылки в базу и выводить их в дальнейшем?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Нет, небезопасно. Достаточно раз в жизни открыть страницу документации по strip_tags и прочитать, что там написано.

    Про теги вообще надо забыть и использовать markdown.
    Ответ написан
    Комментировать
  • Ошибка с базой данных MySQL?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ответ легко ищется поисковиком
    Ответ написан
    Комментировать
  • Как правильно записать массив с данными в базу данных?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как правильно записать массив с данными в базу данных?

    точно так же, как и любые другие данные
    Как все эти данные заставить записываться в массив?

    Они уже в массиве.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Если принять, что запросы разные, а не как здесь, то не маяться дурью, а выполнить два запроса.
    $PDO = ConnectDB();
    $PDO->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $stm = $PDO->prepare(
        'INSERT INTO table
        (name)
        VALUES
        (:name1)
        ON DUPLICATE KEY UPDATE
        other = :name1'
    );
    $stm->bindParam(':name1', 'value1', PDO::PARAM_STR);
    $stm = $PDO->prepare(
        'INSERT INTO table
        (name)
        VALUES
        (:name2)
        ON DUPLICATE KEY UPDATE
        other = :name2;'
    );
    $stm->bindParam(':name2', 'value2', PDO::PARAM_STR);
    $stm->execute();

    если вставка одинаковых полей в одну таблицу, то очевидно мультиинсерт
    Ответ написан
  • Как выполнить CURL с POST данными в виде массива?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ответ написан
    Комментировать
  • Почему данные не отображаются на сайте?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Шикарный путь программиста - C++, C#, RedBean. Такое движение по наклонной в пропасть.

    Впрочем, с таким логическим аппаратом неудивительно.
    то есть сначала мы выводим форму со списком.
    ниже по коду, уже после вывода списка, записываем изменения в этом списке.
    А потом удивляемся, почему это вдруг надо обновить страницу, чтобы список эти изменения отобразил!

    (про то что статус меняем на user, а проверяем либо yes, либо no, я уже молчу)

    Ну ооочень сложный вопрос, аж три подписчика горят желанием узнать, какой баг в операционной системе вызывает такое неочевидное поведение.
    Ответ написан
  • Как запретить работу функции за пределами страницы с формой?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Перед тем как строить движки сайтов по MVC, надо сначала прочитать букварь по веб-разработке.
    И узнать из него, что
    - РНР запускается на сервере. А все формы отображаются в браузере у пользователя.
    - РНР запускается заново на каждый запрос.
    - на странице с формой никаких функций РНР нет. РНР со всеми своими функциями остался на сервере
    - РНР знать ничего не знает ни про какие страницы. Он видит только НТТР запросы. Который приходят не "со страниц", а от НТТР клиента. Который может быть браузером, а может быть какой угодно другой программой. Но даже если и браузер, то опять же, запрос приходит не "со страницы". А из НТТР клиента. В теории, клиент может сообщить серверу, какую страницу он запрашивал перед этим, но как правильно сказано в соседнем ответе, эту информацию легко подделать.
    - все значения констант, установленные про вызове одного скрипта, тоже остались на сервере, и если после этого обратиться к совсем другому скрипту, то он знать ничего не знает про то что делал первый.

    И уже самостоятельно сделать из этой информации вывод о том, что
    Запретить "ссылке отрабатывать самостоятельно, за пределами страницы с формой" невозможно.

    И здесь мы переходим к следующему вопросу.
    Почему вдруг роботы со всего мира вдруг с цепи сорвались и пытаются заргистрироваться на сайте?
    А потому что почему-то вместо регистрации скрипт называется send_mail.
    А боты очень любят писать письма. И как только находят скрипт, который отправляет почту, тут же начинают его дергать, как теленок - мамкину сиську.

    Для того, чтобы они перестали, достаточно просто назвать вещи своими именами. И со страницы регистрации отправлять клиента не на скрипт, который отправляет почту, а на скрипт, который занимается регистрацией.
    Ответ написан
    Комментировать
  • Как сохранить текст с тегами в базе и выводить?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    htmlpurifier но в мильон раз лучше будет использовать вместо дебильного html нормальный markdown
    Ответ написан
  • Как правильно организовать ссылку на значение в связанной таблице?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    "Хочу надевать носки на голову. Есть ли в этом смысл, или лучше надевать на ноги?"

    В чем смысл вашего вопроса? Если вы сами не понимаете, "есть ли смысл" в каком-то действии, то может, тогда его и не делать? Ну вот даже безотносительно баз данных, а просто исходя из минимального здравого смысла?
    Ответ написан
    Комментировать
  • Языки программирования для инженера иб?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Специалисту по ИБ язык надо знать на два порядка лучше программиста, пишущего на этом языке.

    есть ли смысл узнавать о профессиях в ней глубже, если везде нужно знать язык программирования.

    Нет.
    Ответ написан
    Комментировать
  • Экранирование символов при отправке формы POST php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это какая-то чушь. Сам РНР ничего не экранирует.
    И никаких "универсальных" способов экранирования нет. Про 7.3 и минус тоже какая-то глупость.

    Давать пользователю самому вводить регулярку - это стрелять себе в ногу, ошибки буду сыпаться валом.
    Ответ написан
    Комментировать
  • Как привести к числу строку в mysql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    У художника Франсиско Гойи есть известная картина, "Сон разума рождает чудовищ".
    Вот этот запрос как раз и есть такое чудовище.

    Он тем смешнее, что БД как раз и приводит строку 3, 5, 7 к числу. Получая в результате единственно возможный результат - 3.

    Надо не маяться дурью с group_concat, а просто сделать отдельный запрос к таблице авторов. И перебрав в цикле записи первой таблицы добавить к каждой подмассив с авторами.

    Либо сделать нормальный джойн и сгруппировать в вызывающем скрипте
    Ответ написан
    5 комментариев