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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Перебрать $array['driver_profiles'] в цикле
    Все операции над массивами производятся в цикле
    Ответ написан
    4 комментария
  • Как на PHP по формату даты 00.00.0000 вывести текстом, типа "second saturday of february"?

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

    Это же все смехотворные задачи, каждая из которых решается за 30 секунд

    Ох, я забыл про last. Может быть, это и является арифметическим камнем преткновения? ;-)
    Ответ написан
    Комментировать
  • Почему mysqli_insert_id выполняется медленно?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    скорее всего это не mysqli_insert_id() а что-то другое
    Я 20 лет занимаюсь программированием, из них 15 сижу в таких гадюшниках как этот или стаковерфлоу, но никогда не видел подобной проблемы
    и это очевидно, поскольку эта фунция вообще ничего не делает, а только получает от БД УЖЕ сгенерированный идентификатор

    Скорее всего сейчас выяснится, как в песенке "Все хорошо, прекрасная маркиза": дело не в mysqli_insert_id(), а во вставке, и не просто во вставке а в том что вставляется 100500 строк, и не просто, а половина из них с ошибками, и так далее
    Ответ написан
    Комментировать
  • Как сплюсовать значения в многомерном массиве по ключу?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Цифры тут как раз совершенно не обязательны, а вот знаков вопроса должно быть больше. На каждый айди.
    ПХП не джинн из бутылки, чтобы отгадывать, что тут имелось в виду - целиком строка или отдельные значения.
    Если нужны отдельные значения, то и передавать их надо по отдельности, n'est pas?

    Это конечно не так красиво выглядит, но других вариантов все равно нет

    $array = [8,10,11]; 
    $in  = str_repeat('?,', count($array) - 1) . '?';
    $sql = "SELECT * FROM users WHERE id NOT IN ($in)";
    $stmt  = $db->prepare($sql);
    $stmt->execute($array);
    Ответ написан
    5 комментариев
  • Как получить четвертый элемент ассоциативного массива?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    перебирать в цикле и считать до четырех
    Ответ написан
    2 комментария
  • Не отправляется MYSQL ЗАПРОС?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    https://qna.habr.com/q/918033#answer_1847841
    И в целом рекомендую прочитать ответы на этой странице, поскольку со всеми проблемами придется столнуться
    Ответ написан
    Комментировать
  • Можно гит прямо к сайту подключить при разработке?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    можно

    другое дело что на боевом сайте никакую разработку обычно не ведут, и гит на нем тоже держать нежелательно
    если же речь о локальном сервере, то разумеется можно. собственно, гит к сайтам никакого отношения не имеет, он работает с кодом. Как говорил поручик Ржевский, "Код есть? Значит можно".
    Ответ написан
    Комментировать
  • Как защититься от таких инъекций или как они называются?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Тег <script> не имеет ни малейшего отношения к mysql.
    Наличие этого тега в базе данных никакой инъекцией не является.

    "Инъекция" будет только если этот тег будет выведен внутри HTML кода как есть. Называется XSS
    "Инъекция" которая относится к mysql называется SQL инъекция, и чаще всего позволяет прочитать из БД любые данные. Скорее всего является неактуальной для данного сайта, поскольку там просто нечего читать.

    Чтобы защититься от XSS, надо использовать htmlspecialchars() при выводе данных в HTML
    Чтобы защититься от SQL инъекций, надо использовать для работы с БД подготовленные выражения
    Чтобы не "совали" всякий мусор, надо использовать защиту от спама, например капчу.
    Ответ написан
    Комментировать
  • Как записать полученные данные в БД php+sq?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    $stmt = $mysqli->prepare("INSERT INTO table (id1, id2) VALUES (?,?)");
    $id1 = 1;
    foreach( $_POST['id'] as $id2);
        $stmt->bind_param("ss", $id1, $id2);
        $stmt->execute();
    }
    Ответ написан
    7 комментариев
  • Не отправляются данные из формы в базу данных, что не так?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    ошибок и не будет
    потому что ПДО не настроен показывать ошибки
    чтобы настроить, вместо того говнокода который сейчас, должно быть примерно так (не забыть подставить свои значения)
    $host = '127.0.0.1';
    $db   = 'weekly_journal';
    $user = 'root';
    $pass = '';
    $port = "3306";
    $charset = 'utf8mb4';
    $options = [
        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
        \PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset;port=$port";
    $pdo = new \PDO($dsn, $user, $pass, $options);

    после этого если не получится записать, то БД сама скажет - почему.
    Ответ написан
    Комментировать
  • Как правильно отправлять почту через PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    И снова в который раз я поражаюсь той вакханалии безнаказанности, с которой роскомнадзор блокирует интернет для отдельных граждан страны.
    Казалось бы - взял теги и заголовок вопроса, PHP ЭЛЕКТРОННАЯ ПОЧТА ПОЧТОВЫЙ СЕРВЕР Как правильно отправлять почту через PHP?
    и скопипастил в адресную строку своего браузера - что может быть проще?
    Но коварное полицейское государство не дремлет, и вместо результатов поиска показывает только товарища майора, грозно покачивающего пальцем.
    Ответ написан
    1 комментарий
  • Как правильно конвертировать SQL дату, чтобы корректно принять и отправить?

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

    сконвертировать можно обычно с помощью strtotime()/date()
    Ответ написан
    Комментировать
  • Как правильно обрабатывать запросы в PHP?

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

    Вот прям серьёзно?
    В интернете нет информации о том, как обработать JSON POST запрос в PHP?
    Ни одного примера? Роскомнадзор забанил гугль, яндекс, бинг и рамблер?
    Ответ написан
    Комментировать
  • Нормально ли в PHP определять переменную при вызове функции в списке аргументов?

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

    Но по возможности такого подхода следует избегать.

    И чисто технически это не определение переменной при вызове, а передача переменной по ссылке.
    Ответ написан
    5 комментариев
  • Почему file_put_contents() не создает файл?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    61cd1515315b8585107266.jpg

    Если функция записи в файл вызывается, но файл не создается, то РНР напишет в сообщении об ошибке "с чем это связано".
    Спрашивать об этом посторонних людей бесполезно.

    На домашнем компике ошибки обычно выводятся на экран, на боевом сервере - пишутся в лог. Если не знаете, где находится лог с ошибками, надо посмотреть в панельке управления своим сервером.
    Ответ написан
    Комментировать
  • Чем плох md5(md5($pass)) для пароля?

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

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

    Возможно, непонимание происходит оттого, что существует не один, а несколько векторов атаки на пароль.
    1. Поиск хэша по "радужным таблицам" (rainbow tables): огромным базам данных, где собираются заранее посчитанные хэши для любых возможных строк.
    2. Метод грубой силы (bruteforce): перебирать все комбинации символов и применять к ним хэширующую функцию до тех пор, пока она не вернёт искомый хэш.
    3. Поиск по словарю. Похож на брутфорс, но перебор не всех возможных значений, а всего нескольких тысяч самых популярных паролей, типа "123", "password" и пр.
    phpfaq.ru/tech/hashing

    И только одного элемента недостаточно, а нужны все в комплексе:
    - Хэширующая функция должна иметь большую вычислительную сложность, чтобы усложнить подбор перебором. по этой причине md5() не подходит
    - Хэш должен быть посолен уникальной солью, чтобы нельзя было, затратив 1 раз кучу вычислительных усилий, заранее построить хэши для любых комбинаций символов. По этой причине фарш без соли - деньги на ветер.
    - Пароль не должен быть слишком простым, иначе даже медленный перебор его раскроет. Этот момент тоже надо учитывать
    Ответ написан
    Комментировать