Задать вопрос
Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
Ответы пользователя по тегу PHP
  • На чем писать restful api?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ларавель тебе нужен, ларавель.
    Люди, котоыре советуют люмен, не понимают что это такое и как им пользоваться.
    Чтобы освоить люмен тебе нужно еще лет 5 топтать поляну.
    А на Ларе можешь начинать пилить прямо сейчас, она именно для твоей задачи и предназначена
    Ответ написан
    9 комментариев
  • Почему не выполняется остальной код после require_once?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Три проблемы.
    1. Код в вопросе вообще никак не соотносится с реальным кодом
    2. Использование @
    3. Использование бессмысленного try catch
    Ответ написан
    Комментировать
  • Как вывести значения из столбцов Mysql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Купить себе букварь по SQL
    В ужасе дропнуть этот треш
    Сделать нормальную структуру таблиц:
    - таблицу заказов
    - таблицу товаров
    - таблицу товаров в заказе
    Вывести все нужные значения простым SQL запросом
    Ответ написан
    Комментировать
  • Почему выдает ошибку при отправке запроса pdo?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Во время войны с Японией американцы строили аэродромы в Новой Гвинее.
    И местные папуасы видели, что с неба прилетают большие железные птицы, которые привозят кучу ништяков, часть которых в конечном итоге перепадает и папуасам.

    Потом война кончилась, военные демобилизовались, аэродромы опустели.
    Погоревав, папуасы решили взять дело в свои руки, и стали сами строить самолеты из навоза и палок.
    Логично рассчитывая, что увидев нужное оборудовние, боги снова начнут присылать еду и одежду.
    Но увы, ни одной банки консервов так получить не удалось.

    Вот этот вот запрос
    $sql = ("INSERT INTO `products`(`id`, `title`, `price`, `description`, `status`, `img`) 
    VALUES (NULL, '$title', '$price', '$description', '$status','$img')");

    Это как раз такой самолет из соломы.
    Выглядит почти как настоящий, но даже не пукает.
    потому что подготовленные запросы выглядят совсем по-другому.
    Ответ написан
    Комментировать
  • Как в php узнать номер строки по слову?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    простой ответ, который должен был тебе прийти в голову самому - сначала разбить на строки и искать по ним в цикле
    ну а по-хорошему
    $line = substr_count($mystring, "\n", 0, $pos)+1;
    Ответ написан
    Комментировать
  • Какой framework использовать для создания легких сайтов?

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

    Лара - это фреймворк специально разработанный для массового производства, в том числе и примитивных сайтов, в точности по системе "фигак-фигак и в продакшен", которую ты описываешь
    Люмен и другие микрофреймворки - для ГОРАЗДО более опытных разработчиков.
    CMS - это вообще не о том.
    Ответ написан
    3 комментария
  • Где хранить сессии? SQLite? MySQL? Memcached? Redis? FS?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Храни в мускуле.

    Файлы, действительно - самый неудачный вариант. Сара Големон, отвечая недавно на подобный вопрос, написала
    File storage is only a default because the runtime doesn't know in advance what database engine or credentials you're going to use unless you tell it. So... ya know.... tell it.

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

    Редис и мемкеш - это кэш, а не хранилище. Подумай над тем, что такое кэш и для чего он используется. И подходит ли кэш для хранения сессий.

    Про скулиту ты все правильно написал. Те же файлы, вид сбоку.

    А про мускуль очень смешно. Какая-то прямо повальная датабазебоязнь. Откуда это "я вообще хочу минимизировать запросы к MySQL"? Что за ерунда про "соединение может оборваться"? И как ты вообще можешь сравнивать по производительности файл на диске, который открывается при каждом запросе, с демоном, который держит все данные в памяти и отдает по сокету?
    Ответ написан
    32 комментария
  • Как настроить авторизацию в MVC PHP?

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

    Надо на пару лет забыть про красивые слова OOP и MVC, и поучиться просто писать код, который делает то, что требуется.
    Ответ написан
    4 комментария
  • Как правильно вставить переменную в имя таблицы PDO/MySQL?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Неужели так трудно вставить заголовок своего вопроса в адресную строку браузера и нажать Ентер?
    Ответ написан
    Комментировать
  • Где хранить id сессии php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос какой-то странный.
    Идентификатор сессии не нужно хранить.
    Единственная его функция - это предаваться на сервер с каждым запросом.
    Содержимое localStorage само по себе на сервер не передаётся. То есть смысла класть туда ид сессии я не вижу.

    Кроме кук нормальных вариантов все равно нету.
    Если пользователь хочет отключить куки - это значит что он хочет отключить и сессии.
    Имеет полное право.
    Ответ написан
    Комментировать
  • Как использовать PDO в рамках собственного класса?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В константах класса ПДО за тебя слеши кто ставить будет? Пушкин Александр Сергеевич?

    Сообщение об ошибке надо всегда читать целиком. В нем написано номер строки, в которой произошла ошибка. Идем в редактор, считаем строчки, смотрим на ошибку.

    Сам класс, конечно, полная ерунда.
    В классе, который соединяется с БД, не должно быть запросов к данным. Это должно быть в отдельных классах, которые используют класс БД как сервис
    Ответ написан
  • В чем проблема этого кода?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    в том что это бессмысленный набор случайных огрызков, надерганных из интернета
    А должно быть так:
    - соединяемся правильно
    - запрос выполняем один
    - переменные передаем в него через подстановки, а не напрямую
    - идентификатор получаем правильно, а не через одно место автогеном
    <?php
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
    $conn=new mysqli("localhost","?","?","?");
    $conn->set_charset('utf8mb4'); 
    
    $sql="INSERT INTO products(name,href,price,image_href) VALUES (?,?,?,?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssss", $name,$href,$price,$img);
    $stmt->execute();
    echo $conn->insert_id;
    Ответ написан
    Комментировать
  • Насколько защищены файлы php от просмотра?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    РНР файлы не "скрываются от просмотра". Они исполняются и возвращают результат своей работы.
    Никакие дополнительные действия применять не нужно.
    Ответ написан
    2 комментария
  • Как решить ошибку с подключением файла?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Комментировать
  • В чем разница при подключении класса между require и namespace?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Специально для всех местных помогаек.
    Основы нубской психологии:

    1. Нуб по определению существо озабоченное. И в каждом вопросе его интересует исключительно производительность, чтобы код обслуживал охрениллиард клиентов в миллисекунду и никак иначе. при том что и одного посетителя на сайте нет и в обозримом будущем не предвидится.
    2. Даже если написать что "разница незначительная", второе слово он просто не увидит. Так он устроен. Потому что см п.1.

    Поэтому вместо велеречивых рассуждений "ну чуток будет быстее..."надо брать деревянную киянку, и методично бить по голове, приговаривая - "не надо оптимизировать воображаемый код".
    Ответ написан
    Комментировать
  • Как загрузить yaml в php-fpm, что-бы не приходилось читать при каждом запросе?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Поддержу предыдущего оратора.
    Прямо сейчас в этот момент Симфони наоборот избавляется от ямл конфигов в пользу конфигов на РНР.
    Томаш Вотруба написал целых 10 причин, почему это стоит сделать, https://tomasvotruba.com/blog/2020/07/16/10-cool-f...
    Ответ написан
    Комментировать
  • Как узнать когда пользователь покинул мой сайт на php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. на РНР - точно нельзя.
    2. Если страница открыта, то это совсем не значит, что пользователь её читает. Он может быть в другой программе или вообще на кухне
    3. Идея заведомо дурацкая и не стоит ни одной минуты времени, затраченной на неё.
    Ответ написан
    Комментировать
  • Как узнать версию кода php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В РНР нет такого понятия как "версия РНР кода".
    РНР как раз знаменит своей обратной совместимостью, и можно найти много примеров кода, который был написан для 4 версии, и прекрасно будет работать на 8.

    На новых версиях могут перестать работать отдельные участки кода, но в этом случае о них и надо говорить. А про весь код целиком никогда нельзя сказать, для какой он версии.

    В данном случае надо запускать на самой последней версии РНР и следить за ошибками.
    Ответ написан
    Комментировать
  • Как работает веб-сервер и php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ещё раз: два веб-сервера - это очевидный костыль, вызванный только кривизной рук пользователя, но никак не технической необходимостью.

    Веб-сервер, разумеется, нужен только один.
    Класическая схема в 2020 году - один веб-сервер и РНР подключённый через FastCGI РНР.
    Это может быть как Nginx+PHP-FPM
    Так и Apache MPM Event+PHP-FPM. Если ставить апач в современных дистрибутивах, то этот вариант устанавливается по умолчанию.

    В итоге всё сводится к старому как экскремент мамонта протоколу CGI: веб-сервер перенаправляет запрос программе-обработчику (в данном случае РНР), программа-обработчик возвращает НТТР заголовки и (опционально) тело ответа, веб-сервер отдает их клиенту.

    В самом простом варианте отдельный веб-сервер не требуется, см встроенный сервер в РНР.
    Ответ написан