Задать вопрос
Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
Ответы пользователя по тегу PHP
  • (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
    Чебуратор тега РНР
    как его возможно запустить из стороннего скрипта при каждом нажатии на (допустим ссылку)

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Да, можно.
    Ответ написан
    Комментировать
  • Почему не правильно работает min в php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    $res_file = file("number.txt", FILE_IGNORE_NEW_LINES);
    Ответ написан
    3 комментария
  • Что нужно знать новичку при разработке на PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Разделять. Использовать шаблонизатор, например Twig.
    mysql. прямо во время
    Стоит
    Старомодно
    Ответ написан
    Комментировать
  • Правильная ли php-функция фильтрации post данных перед записью в mysql?

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

    По поводу того, что сюда добавить:

    В ужасе стереть все что что тут написано.
    Прочитать раз в жизни документацию и забыть про mysql_real_escape_string как про страшный сон.
    Включить голову, и сообразить, что mysql не подвержена XSS. То есть при записи в базу данных от этой атаки защищаться не нужно.
    Освоить PDO, и использовать подготовленные выражения для работы с базой данных.
    Ответ написан
    6 комментариев
  • Почему не исчезает GET запрос?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Потому что если атрибут action у формы пустой, то используется текущий урл.

    Избавляться от гет параметров в данном случае не нужно.
    От чего нужно избавиться - это от чудовищного учебника (или, скорее, видеокурса, поскольку снежинки же у нас умеют только в видео), в котором написана вся эта чудовищная муть.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    <?php
    session_start();
    $_SESSION['counter'] = $_SESSION['counter'] ?? 0;
    echo "Вы обновили эту страницу ".$_SESSION['counter']++." раз. ";
    echo '<br><a href="">обновить</a>';

    Все прекрасно обновляется с первого раза
    Ответ написан
    Комментировать
  • Как правильно подключать файлы и элементы в php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    phpfaq.ru/tech/tpl
    Также, для общего развития, phpfaq.ru/newbie/paths
    Ну и когда такой структуры в свою очередь перестанет хватать, то https://symfony.ru/doc/current/introduction/from_f...
    Ответ написан
    Комментировать
  • Как исправить ошибку синтаксиса?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Чтобы исправить ошибку синтаксиса, надо научиться считать и выучить синтаксис РНР.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Используй базу данных.

    Если тебе вдруг покажется, с высоты своего гигантского опыта трех дней в программировании, что это решение тебе не подходит, что оно слишком сложное или неудобное, то купи себе книжку по основам пхп, прочти её, а потом используй базу данных.
    Ответ написан
    2 комментария