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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Разделить сущность на несколько мелких сущностей не получится.

    Это тебе только так кажется.

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

    Вот очень хороший доклад от Дмитрия Елисеева (который, на мой взгляд, является на данный момент лучшим в России популяризатором ООП в РНР). Видео стоит посмотреть целиком, но конкретный ответ на твой вопрос начинается на 27 минуте: https://youtu.be/6tL1XOywgUc?t=1653
    Ответ написан
    Комментировать
  • Почему не добавляются/редактируются данные?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Если у тебя нет разрешения от сайта его парсить, то "для продакшена" вообще никакое решение не подойдет. Все равно найдут и оторвут.
    Не говоря уже о том что испльзовать "для продакшена" данные чужого сайта - это свинство. Все чего ты добьешься в итоге - это обосрешь экспириенс другим пользователям, потому что сайт еще больше загрутит гайки
    Ответ написан
  • Где проверять авторизацию пользователя?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Показывать или не показывать блок на странице, это логика отображения
    Ответ написан
    Комментировать
  • Как исправить проблему с сценариями php (работа с .htaccess)?

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

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

    Учитывая что после этого у тебя в любом случае будет редирект, то сообщение пропадет само собой. Никаких специальных телодвижений делать не нужно
    Ответ написан
    Комментировать
  • Нет php.ini, но есть php.ini-development и php.ini-production. Какая между ними разница?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Смешались в кучу кони, люди...

    А всего-то нужен онлайн переводчик и немного здравого смысла

    - development в переводе с английского означает "разработка", то есть процесс создания программы, когда программист является единственным пользователем
    - production в переводе с английского означает "работа в штатном режиме", то есть это когда разработка уже закончена и приложение установлено на сервер и у него тыщи пользователей, среди которых нет программиста

    Как ты думаешь, какое из них тебе подходит?

    Именно php.ini есть свой отделдьный в XAMPP,

    И тут возникает вопрос
    Кто тебе мешал использовать тот РНР который у тебя уже есть, и зачем понадобилось скачивать ещё один?
    Что такое "системный РНР" и чем он отличается от "несистемного"?
    Ответ написан
  • Как сделать одновременный запрос к двум не связанным таблицам в phpmyadmin?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Я одного не могу понять - зачем ты сам себя запутываешь перемешивая эти два запроса?
    почему их нельзя просто выполнить по отдельности и потом отправить в одинджейсон, а не 100500?
    $direct_fly = [];
    $sql = "SELECT id,fio,phone,surname FROM direct_fly";
    $result = $conn->query($sql);
    while($row = $result->fetch_assoc()) {
        $direct_fly[$row["id"]]= $row;
    }
    
    $form = [];
    $sql = "SELECT * FROM form";
    $result = $conn->query($sql);
    while($row = $result->fetch_assoc()) {
        $form[$row["id"]]= $row;
    }
    $out = [
        'direct_fly' => $direct_fly,
        'form' => $form,
    ]; 
    echo json_encode($out);
    Ответ написан
    Комментировать
  • В чем проблема PDO?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это всё какой-то чудовищный карго культ говнокод.
    • особенно функция setConnection, которая вообще ни в какие ворота не лезет, будучи абсолютно, эталонно бессмысленной.
    • И getConnection от неё не далего ушла. То есть внутри все равно ад с глобалсами, но снаружи у нас все выглядит прилично - функция.
    • ПДО, разумеется, используем без подготовленных выражений. Зачем вообще городить авторизацию если любой школьник сможет авторизоваться без всякого пароля через SQL инъекцию?
    • Ошибка соеднинения пдо выводится в красивой красной рамочке. Как будто юзеру прям так интересно читать что у тебя база легла. При этом сам ты этого не узнаешь. Для кого это всё пишется - загадка.


    Ну и традиционно, просто пострясающий в своей осмысленности код:
    Присваиваем переменной $result булево значение и дальше пишем
    if ($result){
        return true;
    }else{
        return false;
    }
    Ответ написан
    Комментировать
  • MySQL, очередная проблема?

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

    Соединяться надо как написано здесь
    и плюс добавить error_reporting(E_ALL);
    Ответ написан
  • Какие порекомендуете материалы для изучения php?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    У меня есть массив, к примеру
    global $ARRAY;
    Есть класс для работы с этим массивом
    class EditArray

    Никогда, никому, ни под каким видом не показывай этот "класс". Потому что это такое извращение, что зоофилия по сравнению с этим - просто невинно подержаться за ручки.
    По крайней мере до тех пор, пока не сделаешь массив $ARRAY свойством класса для работы с ним.

    А по сути, в цикле ходишь по своему пути и присваиваешь текущий элемент $ARRAY переменной по ссылке. в итоге у тебя в этой переменной будет последний уровень
    Ответ написан
    5 комментариев
  • Как автоматически удалять символы если превышает длину Mysql?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    regex:!^100(\.0)?$|^\d?\d(\.\d)?$!

    Можно сделать регулярку попроще и добавить прверку диапазона

    regex:!^\d+(\.\d)?$!|between:0,100
    Ответ написан
  • Как сделать динамическое логирование в Laravel?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Что либо писать руками - это спагетти.
    Суть ларавеля в том, что все делается автоматом

    В данном случае делается middleware,

    <?php
    
    namespace App\Http\Middleware;
    
    use Closure;
    use \Illuminate\Http\Request;
    
    class UserActivityLoggerMiddleware
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle(Request $request, Closure $next)
        {
            // тут пишешь свое логирование
           $user_id = $request->user()->id;
           $action = $request->route()->getName();
            // обяязательная строчка
            return $next($request);
        }
    }

    регистрируешь в Kernel.php
    'logger' => \App\Http\Middleware\UserActivityLoggerMiddleware::class,


    и рауты пользователей заключаешь в вызов этой мидлвари

    Route::group(['middleware' => ['logger']], function()
    {
    }
    Ответ написан
    7 комментариев
  • Как правильно делать запросы к БД?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Я создал Class в котором у меня все функции по работе с БД.

    Это очень недальновидное решение.
    Я понимаю, что на данном этапе ты думаешь что на сайте будет 3 запроса и ты все три можешь положить в один класс.
    Но это не так.
    Запросов будет много и их надо разделять по областям ответственности, которые называют в разном контексте моделями или доменами

    Поэтому у тебя не должно быть никакого класса Functions
    Должен быть класс DB, в котором будет два метода - конструктор, в котором создаётся соединение с БД, и метод для выполнения подготовленного запроса. Например такой

    Дальше ты делаешь классы-модели для работы с определенными наборами данных. В самом простом варианте - с одной таблицей в БД.
    И передаёшь экземпляр класса DB в конструктор.

    file_put_contents и die(); - абсолютно бессмысленные телодвижения
    если не писать try..catch, то РНР сделает абсолютно то же самое: залогирует ошибку и остановит выполнение скрипта
    Ответ написан
  • Защита социальных сетей или как обходить блокировку парсинга?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Какой-то странный вопрос. Ты вроде все описал как долно работать. что конкретно тебе непонятно? Как принять пост запрос на сайте? Серьёзно?
    Как в базе данных пометку сделать?
    Как раскодировать джейсон, добавить элемент в массив и закодировать обратно?
    Как курлом данные отправлять? Типа в интернете нет ни одного примера?
    Если ничего из вышеперечисленного то надо купить учебник и садиться учить РНР.
    Ответ написан
  • Почему не удаляется файл с помощью функции unlink();?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    РНР тебе всегда пишет, почему не удаляется файл.
    Надо только прочитать
    Ошибки пишутся в лог файл на веб-сервере.
    Надо найти лог ошибок, открыть его и прочесть, в чем проблема.
    В линуксе лог ошибок веб-сервера обычно лежит в /var/log
    если это шаред хостинг, то логи можно смотреть там же где и все остальное - в панельке управления

    Спрашивать же у посторонних людей бесполезно - они не знают, почему на твоем сервере твой код не может удалить файл.
    Ответ написан
  • Как защитить php скрипт от запуска на сторонних сайтах?

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

    Никаких "своих" и "не своих" сайтов в природе не существует.
    Для сервера все запуски сторонние.
    Любой сторонний сайт запросит твой ключ и спокойно отдаст его при запросе.
    Ответ написан
    Комментировать