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

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

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Гражданы, имейте уже совесть

    site:toster.ru+php+сравнить+две+даты
    Ответ написан
    Комментировать
  • Почему Cannot modify header information?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    в каком файле копать?

    Сообщение об ошибке читать не пробовал?

    output started at /home/s/sofuwa/beta.sofuwa.ru/public_html/wp-includes/functions.php:4231
    Имя файла и строка - все на блюдечке.
    Ответ написан
    Комментировать
  • Как ко времени например "10:30" прибавить 10 минут в php?

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

    Вычисление времени проходят, по-моему, классе в третьем.
    Возможно, вам стоит повторить курс начальной школы.
    $time = "10:30";
    $add = 10;
    list($hours,$minutes) = explode(":",$time);
    $total_minutes = $hours * 60 + $minutes;
    $new_total = $total_minutes + $add; 
    $new_minutes = $new_total % 60;
    $new_hours = floor($new_total / 60);
    $new_hours = $new_hours % 24;
    $new_time = "$new_hours:$new_minutes";
    Ответ написан
    Комментировать
  • Искажается хеш из MySQL при проверке пароля - как поправить?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Показываю на пальцах, как отлаживать свой кривой код

    $passwd = '123123';
    $email = "test@test.test";
    $hash = password_hash($passwd, PASSWORD_DEFAULT);
    $stmt =$conn->prepare("INSERT INTO reg SET email = ?, password=?, name_reg=''");
    $stmt->bind_param("ss", $email, $hash,);
    $stmt->execute();
    $id = $conn->insert_id;
    
    $stmt =$conn->prepare("SELECT * FROM reg WHERE id=?");
    $stmt->bind_param("s", $id);
    $stmt->execute();
    $result = $stmt->get_result();
    $userData = $result->fetch_assoc();
    
    $checkPasswd = password_verify($hash, $userData["password"]);
    var_dump($hash, $userData["password"],$passwd === $userData["password"],$checkPasswd);


    Запустить этот код и убедиться, что на удивление, База данных ничего с твоими данными не делает, возвращает в точности то же самое что клал (ну или, как вариант, с удивлением обнаружить что длина поля совсем не 128 букв например).

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

    Если $hash, $userData["password"] выглядят одинаково, но $passwd === $userData["password"] возвращает false, то выводим $hash, $userData["password"] через urlencode() и смотрим разницу.

    Основная идея тут в том, чтобы проверять каждое свое предположение. Причем не методом высасывания из пальца, а самым что ни на есть наглядным способом. То есть проверять ровно то, что клал в конкретную таблицу БД, а не то что когда-то давно куда-то клал, но куда и когда не помню.
    Ответ написан
    2 комментария
  • Как записать через php данные в базу MS SQL (не MySQL) в кодировке windows-1251?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    set names задает не целевую кодировку, а исходную
    Целевую указывать не надо, база ее и так знает
    Ответ написан
  • Как выводить массив в цикле в шаблоне по порядку?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    У тебя вшаблоге не должно быть строк с "Москва", "АБВ".

    Эти строки должны лежать в базе.
    Там же, где и ссылки
    И выводиться тем же циклом
    Ответ написан
    5 комментариев
  • Не выводится цикл из бд?

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

    У тебя не "не выводится", а "выводится только последняя запись". Вот и пиши это в гугл. Эта дурацкая ошибка весьма популярна среди новичков и ответов найдется море.
    Ответ написан
    Комментировать
  • Как получить данные из файла?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Оторвать руки тому, кто этот файл составлял.
    Потом найти какого-нибудь сообразительного пятиклассника чтобы записал в файл нормальный json. Ну или хотя бы писал в разные файлы.
    После этого читать файл обычным порядком.

    Ну или ладно. Это, конечно, ад, и за такое надо тоже руки отрывать
    $s = file_get_contents("fail");
    $s = str_replace(["\r","\n"], "", $s);
    $s = "[" . str_replace("}{", "},{", $s) . "]";
    $array = json_decode($s,1);


    Дальше сам.
    Ответ написан
    3 комментария
  • Как изменить значение каждого элемента в массиве?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Для того, чтобы перебрать элементы массива по очереди, требуется такой основополагающий элемент программирвоания, как цикл.
    В РНР есть универсальная функция для перебора массивов - foreach. В базовом варианте мы проходим по массиву, получая пары ключ-значение и присваиваем элементу массива новое значение по ключу.
    foreach ($array as $key => $value) {
        $array[$key] = something($value);
    }

    чтобы в результате было так

    Это уже другой вопрос, к массивам никакого отношения не имеющий.
    Ответ написан
  • Если вставлять фрагменты php кода в html разметку - плохо, то что тогда хорошо?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В любом утверждении важно понимать контекст.
    А также учитывать, что 95% говорящих вообще не понимают, что говорят.

    Речь идет о том, что перемешивать логику приложения и логику отображения - плохо.
    Но если чисто для логики отображения, то пхп применять при выводе хтмл можно.

    Если у тебя при запросе в БД тут же вываливается хтмл - это так и есть, извращение.
    Если ты, как аккуратный пионер, сначала получил все данные, а потом приинклюдил файл шаблона, в котором пхп занимается только выводом полученных раньше данных - то сделал все правильно и со временем освоишь работу с настоящими шаблонизаторами.
    phpfaq.ru/tech/tpl
    Ответ написан
    Комментировать
  • Возможен ли обход защиты на загрузку php в этом участке кода?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. Правильно. В инете есть куча статей (как и ответов на тостере), которые преподносят эту фигню как панацею.
    2. Я бы и сам был не против посмотреть, как это обойти. Возможно, она обходится не в лоб. зачем-то ведь есть строчка list ($foo,$ext) = getnameUpload($myFile["name"]); при том что результат нигде не используется. Возможно, дальше проверяется именно $ext, и надо смотреть код getnameUpload
    Ответ написан
  • Как реализовать переподключение скриптов на новой php странице без перезагрузки сайта?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В общем, не надо мудрить, все должно быть в одной таблице.

    В случае, когда таблиц несколько, сначала вставляем в первую, получаем идентификатор, и используем его при вставке в остальные.
    Ответ написан
    1 комментарий
  • Копируется 2 раза. Как исправить?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Очередная жертва видеокурсов.

    Всем задающим вопрос про тухлую фасоль надо насильно отключать Ютуб, давать книгу Котерова, и не включать пока не прочитают.

    Потому что это садизм - показывать несчастным детям два приема использования устаревшей в прошлом веке библиотеки и говорить что они освоили программирование и дальше могут сами
    Ответ написан
    Комментировать
  • Почему rand() может выдавать очень близкие значения?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Потому что случайные.
    Кому-то здесь надо уяснить для себя смысл этого слова. И явно не одному автору.

    Случайно тут могут оказаться не то что "близкие" а вообще одинаковые значения.
    Ответ написан
    3 комментария
  • Как отформатировать число?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как-то неказисто, но ничего кроме strrev в голову вечером не приходит
    strrev(chunk_split(strrev(11223344556677), 4, ' '));
    Ответ написан
    3 комментария