Задать вопрос
Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
Ответы пользователя по тегу PHP
  • Возможно ли в php закомментить кавычку с помощью решётки(#)?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    И если так возможно сделать, тогда как убрать символ коммента из php?

    НИКАК
    Надо не символы убирать, а запросы нормально писать, чтобы ниакие символы не мешали.

    Я же тебе давал ссылку, где написано, что делать. А ты опять всякую дурь читаешь.
    Ответ написан
    2 комментария
  • Как защитить файлы, которые выводятся через mpdf?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Идем в мануал, читаем
    session_start ([ array $options = array() ] ) : bool
    Скроллим вниз до См. так же
    видим функцию, которая нам нужна
    Ответ написан
  • Как добавлять записи в MySQL в конец таблицы?

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

    Любой порядок записи в БД приобретают только при выводе, и если только его явно задать. Во всех остальных случаях записи выводятся втом порядке, который удобен базе.
    выбирать все строки, сортировать и выбирать с самым маленьким ID - это как-то трудоёмко)

    Так и делать. Только средствами БД.
    Открываешь для себя операторы ORDER BY, LIMIT - и вперёд.
    Ответ написан
    1 комментарий
  • Hе работает fetch_assoc?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    перед соединением с БД надо написать волшебную строчку
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    и запустить свой код еще раз.
    прочесть сообщение об ошибке
    Ответ написан
  • Зачем нужен strip_tags и real_escape_string если есть htmlspecialchars?

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

    И при всем при этом, для входящих параметров ни одна из этих функций не нужна.

    - strip_tags это какой-то рудимент. Сейчас практически не используется.
    - real_escape_string это вообще совсем из другой оперы. к HTML никакого отношения не имеет. Причем в своей области тоже рудимент и применяться не должна.
    - htmlspecialchars единственная осмысленная функция из всех перечилсенных. но должна применяться не для "очистки" при вводе, а при выводе пользовательских данных в HTML
    Ответ написан
  • Скрипт проверка емаил адреса на существование, есть что-то подобное?

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

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

    Проверять надо не существование ящика, а наличие пользователя, который его читает. Что достигается, как выше ответили, совершенно стандартным способом - отправкой емейла с кодом. Не "прямо при вводе", но зато надежно
    Ответ написан
    Комментировать
  • Как реализовать чтобы ответ curl'a формировался в базе данных mySQL?

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

    Получив в пхп данные через курл, ты дальше забываешь это слово. И учишь новое - json.
    Поскольку именно так называется формат, в котором ты данные получил.
    Гуглишь "как раскодировать json в php".
    Заметь до базы данных мы даже не добрались еще.

    Раскодировав джейсон, учишься работать с массивами в пхп и получить из них нужную тебе инфоромацию.
    Топиков на тостере вагон, можешь почитать.

    Дальше ты забываешь про джейсон и учишься работать с БД. Запрос на вставку.

    Дальше учишься работать с ПДО в пхп.

    И только после этого соединяешь все три последних элемента - через ПДО выполняешь запрос к базе данных, который записывает имеющиеся у тебя значения массива.
    Ответ написан
    Комментировать
  • Как получить несколько записей с БД?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Я в общем согласен с предыущим оратором, что PDO будет попроще в работе, тем более что твои познания в mysqli не сильно отличаются от полного незнания, и в этом смысле разница будет невелика.

    Но чтобы в прыжке не переобуваться, вот тебе код для mysqli
    в массиве $array лежат твои id товаров
    $array = [1,2,3];
    $in  = str_repeat('?,', count($array) - 1) . '?';
    $sql = "SELECT * FROM `tovar` WHERE `id` = IN ($in)";
    $stmt  = $mysqli->prepare($sql);
    $types = str_repeat('s', count($array));
    $stmt->bind_param($types, ...$array);
    $Stmt->execute();
    $result = $stmt->get_result(); // get the mysqli result
    $data = $result->fetch_all(MYSQLI_ASSOC);

    Теперь в массиве $data лежат твои товары.

    Для сравнения, код для пдо будет попроще
    Плюс, в качестве бонуса, пдо вернет массив, проиндексированный не числами по порядку, а ид товара. Тебе же надо будет как-то совмещать данные из бд с товарами, чтобы перемножить цену на количество.
    $array = [1,2,3];
    $in  = str_repeat('?,', count($array) - 1) . '?';
    $sql = "SELECT * FROM `tovar` WHERE `id` = IN ($in)";
    $stmt  = $pdo->prepare($sql);
    $stmt->execute($array);
    $data = $stmt->fetchAll(PDO::FETCH_UNIQUE);
    Ответ написан
    5 комментариев
  • Не получается сделать сравнение числа из базы данных и input. Ниже подробности. Как?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Прямо анекдот
    - Ты где деньги берешь?
    - В тумбочке.
    - А откуда они там?
    - Жена кладет.
    - А у нее откуда?
    - Я даю.
    - Ну а ты-то где их берешь?
    - Да в тумбочке!

    Вот у тебя массив $data это такая тумбочка, в которой, как ты воображаешь, лежат любые данные, как только они тебе понадобятся. Из базы, из реквеста - без разницы. Всё в тумбочке.
    Я даже не уверен, что ты к БД обращаешься. Зачем? Все в $data само появится.
    Ответ написан
    Комментировать
  • Как исправить эту ошибку?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. Выкинуть класс DataBase на помойку, он здесь явно лишний.
    2. создать файл engine/что-нибудь/mysqli.php и записать в него код отсюда
    3. Добавить а параметрам функции $mysqli
    function fakePayout ($mysqli, $user, $amount, $time) {

    4. Переписать код запросов на подготовленные выражения
    function fakePayout ($mysqli, $user, $amount, $time) {
       $referer = 'P'.rand(4, 6).rand(1, 0).rand(000000, 999999);
       $refererIncome = $amount/100*150;
       $stmt = $mysqli->prepare("INSERT INTO `deposits` (`user`, `amount`, `time`, `type`, `fake`) VALUES (?,?,?, '1', '1')");
        $stmt->bind_param("sss", $user, $amount, $time);
        $stmt->execute();
        $stmt = $mysqli->prepare("INSERT INTO `deposits` (`user`, `amount`, `time`, `type`, `fake`) VALUES (?,?,?, '2', '1')");
        $stmt->bind_param("sss", $referer, $refererIncome, $time);
        $stmt->execute();
    }

    5. Вызывать как обычно
    include_once(dirname(__FILE__).'/engine/что-нибудь/mysqli.php');
    fakePayout ($mysqli,$user, $amount, $time);
    Ответ написан
    Комментировать
  • Почему: Cannot modify header information?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Потому что сообщения об ошибках надо читать.
    Читать надо сообщения об ошибках.
    И только потом бежать что-то делать.

    output started at /home/s/sofuwa/beta.sofuwa.ru/public_html/wp-includes/functions.php:4231

    Никаким BOM в таком месте даже и не пахнет.
    Вместо "массовых преобразований" надо открыть конкретный файл, на конкретной строке, и смотреть что там вылезает

    phpfaq.ru/newbie/headers
    Ответ написан
    2 комментария
  • Как лучше всего писать и вызывать контроллеры в рамках шаблона MVC?

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

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

    плюс абсолютно бессмысленный код, который вообще ничего не показывает, даже пресловутый "вызов по цепочке"

    плюс непонятно, в чем конкретно вопрос.
    можно ли в start() написать
    $this->one()
    $this->two()
    $this->three()
    ?

    Можно
    Ответ написан
  • Проблема при попытке отправить письмо?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    не могу понять почему она произошла.

    Для этого следует прочитать сообщение об ошибке.
    Ответ написан
    Комментировать
  • Как из объекта убрать повторы?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вы, друзья мои, совсем обленились.
    site:toster.ru php вытащить данные из json
    Ответ написан
    2 комментария
  • Как получать доступ к данным через php из json массива?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ответ написан
    Комментировать
  • Как выглядит и работает фильтрация PHP POST & GET?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как выглядит и работает фильтрация PHP POST & GET?

    Никак.
    Я понимаю, что это утверждение не укладывается голове у человека, изучавшего пхп по видеокурсам, но это факт.
    Сами по себе НТТР запросы POST & GET никакой угрозы не несут и как-то заранее фильтровать их не надо.

    Фильтровать вообще надо не по принципу "откуда", а по принципу "куда".
    Данные надо форматировать в зависимости от того, куда они пойдут, а не откуда они пришли. SQL запросу абсолтно фиолетово, откуда взялась кавычка в данных - из GET, файла на диске, или из другой базы данных. Данные для SQL надо правильно форматировать не потому что они пришли из GET, а потому что они идут в SQL.
    (При этом надо также понимать, что SQL запрос и база данных - это не одно и тоже. Базе тоже по барабану, что в ней лежит. Любое форматирование мы делаем только для SQL запроса, а в базе данные снова должны быть как есть).

    Я думал, что будут удаляться все кавычки и теги,а по факту они остаются.

    Если бы все думали, как ты, то ты бы не смог задать свой вопрос на Тостере. Потому что без кавычек и тегов он превратился бы в бессмыслицу. Как и куча любых других вопросов.
    Разумеется, "мусор" надо не удалять, а форматировать. Потому что это "мусор" только для SQL, а для человека это нужная информация, которая помогает читать текст.

    Не использовать же для этого регулярки?

    Нет, разумеется.
    Использовать регулярки будет так же глупо, как и твою функцию.

    Для того, чтобы поместить переменную в SQL запрос, надо использовать подстановки в подготовленных выражениях. Запомни это предложение. Оно важнее всего, что ты до сих пор успел узнать про пхп. Хорошоенько запомни, ты должен это знать лучше, чем зовут маму с папой. И никогда не отступать от этого правила. Не важно - нужна тебе защита от SQL инъекций или не нужна, из POST-а ли пришли данные, или Господь бог тебе их надиктовал на горе Синайской - все равно всегда и везде только через подстановки.

    Поэтому.
    1. Выкидываешь свою функцию на помойку. Единственное слово, которое там имеет там хоть какой-то смысл - это trim(). Ну так ты можешь вызывать её напрямую.
    2. Судя по уровню кода и вопроса, для работы с бд ты используешь убогую mysqli. Поэтому забудь вообще про mysqli_query(), а все запросы, в которых используется хотя бы одна переменная, выполняешь только так
    $stmt = $conn->prepare("INSERT INTO tablitsa (login_name,email) VALUES (?,?)");
    $stmt->bind_param("ss", $login, $email);
    $stmt->execute();

    Подробнее можешь почитать в интернете.
    3. При выводе пользовательских данных в HTML, используешь функцию htmlspecialchars(). Надеюсь, к этому моменту ты уже понял главную мысль - важно не откуда пришли данные, а куда. Идут в хтмл? Отлично, форматируем их для хтмл.
    Ответ написан
    6 комментариев
  • Почему require_once не работает?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Потому что надо учить основы работы с файловой системой.

    Для того, чтобы require не выдавал ошибку, путь к файлу должен быть правильным и абсолютным.

    То, что файлы лежат в одной папке, еще ничего не значит.
    Вызывают их из другой папки, которая считается рабочей. Поэтому пхп смотрит в той папке, где расположен вызывающий скрипт, а не вызываемый.
    Ответ написан
    Комментировать