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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    $allowed = ["name","price","qty"]; 
    if (!in_array($sort, $allowed, true)) {
        throw new InvalidArgumentException("Invalid order by value"); 
    }
    $stm = $db->prepare('SELECT * FROM `users` ORDER BY `$sort` ASC LIMIT ?,?');
    $stm->execute([$art,$kol]);
    Ответ написан
    Комментировать
  • Правильно ли я делаю с точки зрения ООП?

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

    ООПэ - это немного про другое.

    Чисто если придираться по реализации - совершенно непонятно что делает класс Хелпер и почему он получает на вход не данные а валидатор.
    Ну это я не знаю, как если для варки супа ты используешь не объект Кастрюля, а объект Посуда, кладешь в нее ножик для чистки овощей, а не сами овощи.
    Ответ написан
    5 комментариев
  • Как в современном мире используют php?

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

    - использование РНР в мире
    - использование РНР в качестве шаблонизатора
    - проецирование своего микроскопического опыта разработки микроскопических страниц на всю разработку в целом.

    Поэтому отвечать надо на все три вопроса по отдельности

    1. РНР в современном мире используется очень по-разному. Можно очень грубо разделить на 4 группы
    - многочисленная армия клепальщиков готовых сайтов на конструкторах типа Битрикса, Вордпресса, Друпала, Маженто и весь прочий зоопарк
    - довольно многочисленная армия тех кто не смог освоить даже предыдущий пункт, и до сих пор старательно выводит по слогам "вайл муэскуэль фетч эррэй"...
    - относительно малочисленная группа освоившая современные методы разработки включая фреймворки, поставившая напиливание сайтов на поток
    - довольно малочисленная группа программистов, которые пилят штучные проекты типа ВК, Баду, ФБ и прочий хайлоад

    2. использование РНР в качестве шаблонизатора
    Опять же, зависит от группы, к которой ты относишься, но на практике встречается только в группе 3.
    Остальные уже научились использовать шаблонизаторы.

    3. Не все проекты являются примитивным перекладыванием данных из БД в ХТМЛ. ООП "и другие возможности" нужны для написания сложных программных систем.
    Ответ написан
    Комментировать
  • Как правильно делать соединение с базой данных?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В браузере открывается эта папка и видны все файлы.

    Ну и что?

    Вообще конечно листинг это неаккуратненько.
    Если у тебя апач, то добавиь .htaccess со строчкой
    Options -Indexes
    Ответ написан
    8 комментариев
  • Как оптимизировать этот php код?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    я думаю, даже in_array будет быстрее чем это.
    Но по-хорошему надо сделать значения индексами
    тогда проверка будет проходить мгновенно
    $base = array_flip(array_column($base, 'ID'));
    foreach($data as $dates) {
        if (!isset($base[$dates['ID']])) {
                $itog[] = $dates;
        }
    }
    Ответ написан
    3 комментария
  • На чем писать 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
    Чебуратор тега РНР
    Комментировать