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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    ну например $_SERVER['PHP_SELF']
    но вообще такой вопрос говорит о том что вы что-то делаете неправильно и нужно больше контекста.
    зачем вдруг понадобилось узнавать, в каком файле был вызван include?
    в общем случае без адовых костылей это не узнать, и лучше поэтому не заморочиваться.
    Ответ написан
    3 комментария
  • Как отправить ответ для recapcha?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Может быть, все-таки, не наглеть, и не делать гадости другим людям?
    Делать такие вещи - это как мусорить на общественном пляже.
    Тебе в данный момент так комфортнее, но ты так загаживаешь среду обитания для сотен людей.

    Уже сейчас каптчи такие, что их человеку разгадать трудно.
    Если сайт увидит что капчу обходят - он поставит другую, более сложную защиту, и в итоге людям будет еще труднее пользоваться сервисом. Так для решения своих личных проблем ты портишь жизнь сотням людей.
    Не стоит так делать.
    Ответ написан
  • Как корректно описать PHP класс?

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

    Именно в этом состоит разница между двумя основными архитектурами ORM - Active Record и Data Mapper.

    Data Mapper разделяет работу с бд и бизнес-логику самого объекта. В итоге мы имеем два объекта - UserMapper и User. UserMapper занимается общением с базой - ищет в БД и возвращает инстанс объекта User, обновляет данные в БД, удаляет строку из БД. Класс же User реализует только бизнес-логику, ничего не зная о том, как его данные хранятся в БД.

    Active Record же держит все в одном классе, то есть сам юзер ищет себя в базе, удаляет, и так далее.

    Я думаю, сейчас настало время перейти к варианту Data Mapper.
    Ответ написан
    1 комментарий
  • Как проверить параметр функции?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Так и проверять - через параметр.

    function myinclude($position) {
        if ($position == 'header') {
        }
    }
    myinclude('header');
    myinclude('sidebar');
    myinclude('fooer');
    Ответ написан
    Комментировать
  • Ошибка синтаксиса mysql, почему?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    потому что это называется SQL инъекция.

    Запросы надо выполнять через подготовленные выражения.
    $query = "INSERT INTO users SET login = ?, name = ?, email = ?, pass = ?, status = 'user'";
    $stmt = $link->prepare($query);
    $stmt->bind_param("ssss",$login,$name,$email,$pass);
    $stmt->execute();


    То же самое касается и всех остальных запросов, в которых участвуют переменные
    Ответ написан
    Комментировать
  • Как получить имя формы в обработчик php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никак. Разумеется.

    Фома передает только те поля, которые передаются через инпуты.
    Тег <form> не является инпутом и указывать для него атрибут name бессмысленно.
    Если хочется получить каке-либо дополнительно значение, его надо передавать через скрытое поле ввода.
    Ответ написан
    1 комментарий
  • Как сделать вывод страниц из бд по ЧПУ php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [L,QSA]


    Во-первых, никаких "categor". Введенный адрес всегда доступен в пхп, так что загружать этим htaccess бессмысленно.

    Дальше, никакого "chpu" и прочей ерунды в базе быть не должно. Нам должен быть только идентификатор новости. Но он в базе и так есть. И это единственное, что должно быть в адресе. остальное по желанию.

    Соответственно, вынимаем из $_SERVER['REQUEST_URI'] ид новости, и по этому ид запрашиваем.
    Ответ написан
    5 комментариев
  • Нагружает ли composer сайт на production?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    при соединении с БД надо задать кодировку utf8
    Ответ написан
    Комментировать
  • (RedBeanPHP) Почему я получаю NULL?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Кто ж вас учит-то всех ред бину, не дав прочитать букварь по пхп?

    Сначала читаем про область видимости
    Потом начинаем такой интересный процесс, как "думать":
    смотрим на код
    showService();
    и думаем, с какой стати у нас тут окажется переменная $services после вызова этой функции. Ответ: ни с какой.

    После этого читаем про возвращение значений из функций и снова думаем - как нам получить в переменную значение, которую возвращает нам функция. чтобы потом мы уже наконец-то смогли использовать эту переменную.
    Подсказка: пример можно посмотреть в третьей строчке приведенного в вопросе кода
    Ответ написан
    Комментировать
  • Как перекодировать данные Mysql и PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Данные надо перекодировать не при выборке, а при записи.
    Перед записью должен выполняться запрос SET NAMES с указанием кодировки входящих данных.
    Ответ написан
    Комментировать
  • Вывод данных из mysql по id url?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Для работы с базой данных в РНР следует использовать класс PDO.

    Код для соединения с MySQL берем отсюда, меняем настройки под свои и сохраняем в файл db.php

    После этого в своем скрипте пишем require 'db.php';` и после этого в нем будет доступна переменная $pdo, которая будет использоваться для всех запросов к базе данных.

    Выполнение запроса SELECT включает в себя 3 стадии:

    - подготовка запроса, при этом на место всех переменных ставятся знаки вопроса. При этом создается переменная $stmt.
    - выполнение запроса, при котором все участвующие в запросе переменные отправляются отдельно, в виде массива, в метод $stmt->execute().
    - получение запрошенных данных. Данные можно получить тремя разными способами
    - одну строку в виде массива или объекта, `$stmt->fetch()`
    - массив строк, если запрос может вернуть больше одной строки, `$stmt->fetchAll()`. После этого полученный массив можно будет вывести через `foreach()`.
    - единственное значение - если мы запрашиваем единственную колонку единственной строки, `$stmt->fetchColumn()`
    - в очень редких случаях получение может быть выполнено четвертым способом - выборка по одной строке в цикле, но мы его здесь рассматривать не будем.

    Это схема для выполнения любых запросов, в которых участвуют переменные. В данном случае код будет таким:

    require 'db.php';
    
    $stmt = $pdo->prepare('SELECT * FROM order WHERE id=?'); // подготовка
    $stmt->execute([$_GET['id']]); // выполнение
    $order = $stmt->fetch(); // получение


    После этого в массиве $order окажутся все полученные данные
    Ответ написан
    Комментировать
  • Как из "\xe1\xb4\x81" сделать ᴁ?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Интересно, что никто из отвечателей не предложил вариант
    echo "\xe1\xb4\x81";
    который отработает ничуть не хуже их гениальных предложений
    и будет столь же бесполезен для автора

    function decode_slashx($code){
        return preg_replace_callback(
            "~\\\x([0-9a-f]{2})~",
            function($m){
                return chr(hexdec($m[2]));
            },
            $code
        );
    }
    Ответ написан
    4 комментария
  • Как увидеть элемент класса в функции php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В РНР нет никаких "элементов класса". Есть переменные. Которые подчиняются правилам области видимости.

    Чтобы использовать переменную $mysqli в функции enter(), ее надо передать в функцию в качестве параметра

    Отдельно хочу заметить, что весь этот код не имеет ни малейшего смысла, кто угодно сможет залогиниться без пароля через SQL инъекцию. Как правильно проверять пароль через mysqli
    Ответ написан
  • Как написать код запроса в БД в связке с массивом?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Для ответа на этот вопрос надо сделать три вещи
    1. Перестать постить сюда картинки вывода массивов из консоли браузера. РНР - не яваскрипт, а консоль браузера - не веб-сервер. Если работать надо с массивом РНР, то и вывод массива надо делать из РНР.
    2. Получить из этого неудобного массива список id в одномерный массив. Это делается с помощью функции array_column()
    3. Запросить из базы все строки, id которых совпадают со значениями в массиве. Разумеется, делать это только через подготовленные выражения
    Ответ написан
    Комментировать
  • Как реализовать платный функционал в софте не зашивая его в код?

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

    Оpensource проекты не работают по модели рэкета. Деньги в opensource проектах делаются на сервисе.
    Если вы можете предоставить расширенный сервис, то подписывайте клинта на него.
    Если не можете, то не пытайтесь торговать открытым кодом, предоставляйте сервис по модели SaaS
    Ответ написан
    Комментировать
  • Как $_GET-ом достать строку?

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

    В данном случае следует ознакомиться с документацией на метод R::load() и сделать из полученной информации логическое умозаключение, подходит ли этот метод для получения данных из произвольных полей таблицы.
    Ответ написан
    1 комментарий
  • Можно ли делать редиректы из моделей?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Нельзя.

    Модель ничего не знает о вызывающем интерфейсе.
    Есть очень простая эмпирическая проверка, относится ли какой-либо код к модели или к контроллеру: реализовать тот же самый функционал через утилиту командной строки.

    В данном случае тут же станет ясно, что редирект в командной строке - а следовательно и в модели - является бессмыслицей. А любые манипуляции с НТТР протоколом должны совершаться в том единственном компоненте, который отвечает за работу c HTTP - контроллере.
    Ответ написан
    Комментировать
  • Как правильно будет реализовать POST запрос на сайте?

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

    Поместить в сторонний скрипт, на который сделать ссылку.
    Ответ написан
    Комментировать