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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    С разделителями в бд вообще никогда ничего хранить не надо.
    Если информация о файлах в БД не нужна, то не хранить её там вообще.
    Делать отдельные папки будет вполне достаточно.
    Ответ написан
    5 комментариев
  • Как решить правильно простенькую задачку по php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Проблема заключается в том, что спустя n-ое количество рандомных строк показываются строки с пробелом

    Это очень забавный вопрос :)
    хотя, как вы видите,его у меня в строке $str нет.

    Как мы видим, его у тебя там есть :)
    Ответ написан
    2 комментария
  • Запись переменных?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    > проблема в функции, если пишу ее в while получаю ошибку Cannot redeclare priceUsd()

    выносить из цикла надо только объявление функции.
    А вызов функции, разумеется, надо оставить внутри цикла.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Для начала надо определиться, что считаем.
    И зачем.
    Без этого приступать к любой задаче бессмысленно.

    Если надо повесить на страницу бессмысленный счетчик "сколько раз просмотрели статью", то тупо при каждом открытии и не париться.
    Если интересует какая-то осмысленная статистика, то сформулировать задачу и подбирать решение под неё.
    Ответ написан
    Комментировать
  • Как измерить скорость php-функции?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    НИКАК не измерять
    Все функции РНР работают одинаково быстро.
    Заниматься подобными измерениями на пустом месте - очень тяжелое заболевание.
    Просто забудьте про подобные измерения и займитесь чем-нибудь полезным.
    Ответ написан
    2 комментария
  • Как вывести данные SQL в переменную?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Сначала надо соединиться с базой данных

    Дальше все зависит от того, откуда берется 123.
    Если 123 так всегда и написано в вопросе (что вряд ли), то так.
    $query ="SELECT money FROM bot WHERE id_vk = 123";
    $money = $pdo->query($query)->fetchColumn();

    А если 123 сама лежит в переменной, то так
    $query ="SELECT money FROM bot WHERE id_vk = ?";
    $stmt = $pdo->prepare($query);
    $stmt->execute([$id_vk]);
    $money = $stmt->fetchColumn();
    Ответ написан
    1 комментарий
  • Как создать индивидуальный профиль, чтобы перейдя по ссылке на него можно было зайти?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    > какую литературу можно почитать, чтобы лучше разбираться в таких вопросах?

    Любую.
    Создание страницы, которая отображает информацию из БД по запросу - это самая базовая операция, которая только есть в веб-программировании, и она рассматривается в любой литературе.

    Передать значение в адресной строке - добавить к ней строку вида ?peremennaya=znachenie
    Получить значение из адресной строки - массив $_GET
    Получить данные из БД - запросить их с помощью PDO

    Делаешь ссылку вида http://moi.sait/profile.php?id=идентификатор пользователя и в файле profile.php пишешь простой код для получения данных из БД
    Ответ написан
    4 комментария
  • Как запретить пользователю обращаться к серверным PHP скриптам по url?

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

    Остальные можно поместить в папку выше корня веб-сервера. Но вообще это бессмысленная затея, ,так что расслабься и займись лучше чем-нибудь полезным.
    Ответ написан
    Комментировать
  • Не могу понять ошибку php Couldn't fetch mysqli_result?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Такое сообщение об ошибке появляется, если результат уже закрыт, а ты пытаешься из него получить данные. Это значит что ты где-то в коде вызываешь free_result перед fetch

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Причина в настройках сервера. На 3v4l сервер настроен правильно, а дома через какой-нибудь убогий вамп или опенсервер включен output buffering чтобы нубы не так сильно рыдали, написав свобю первую кривую программу.
    Ответ написан
    2 комментария
  • Какое время запроса к Базе Данных можно считать приемлемым?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Какое время запроса к Базе Данных можно считать приемлемым?

    0.2 для сложного запроса это много, но терпимо
    Получается, если на сайте 5 человек одновременно сделают такой запрос, то последний получит ответ через 1 секунду? Или они будут обработаны параллельно.

    Они будут обработаны параллельно.
    А если на странице будет 1000 человек,

    "на странице 1000 человек" и "1000 человек сделают запрос одновременно" - это ОЧЕНЬ разные цифры. На два порядка. Пользователь "на странице" не делает запрос каждую секунду. Обычно он еще читает и как-то работает с полученной информацией. Плюс свои влажные эротические мечты следует контролировать. У тебя есть сейчас 1000 одновременных пользователей? я думаю, что и двух нету. Вот и не надо забивать себе голову.
    Как понять какое время запроса к БД будет адекватным?

    С помощью сравнения.
    Если запрос с фильтрами выполняется в 20 раз медленнее, чем без фильтров, то в базе не хватает индексов.
    Выполнить EXPLAIN и расставлять индексы соответственно. Возможно, потребуется составной индекс
    Ответ написан
    Комментировать
  • Как извлечь отдельный элемент из таблицы?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Для этого служит метод PDOStatement::fetchColumn

    $name = $pdo->query("SELECT name FROM user WHERE id = 2")->fetchColumn();
    Ответ написан
    Комментировать
  • Если уже залили шелл и хотят слить мой скрипт?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Какой-то странный вопрос, больше похожий на паранойю.

    постоянно пытаются ломать судя по логам - попытки sql инъекции где только можно, в любой инпут

    Это не показатель популярности ресурса у хакеров, а рутина. Тупые дети со всего мира запускают веерное сканирование, этого добра полно в логах любого сайта.

    хочет слить проект в паблик

    Это самая странная часть. Шел уже залит, и хакер сидит и ждёт пока ты задашь вопрос на тостере?
    Ответ написан
    4 комментария
  • Как сформировать внешний URL?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Подскажите, пожалуйста, как же правильно отформатировать адрес сайта из формы обратной связи и сформировать ссылку?
    $url = substr($url, 0, 4) == 'http' ? $url : "http://$url";
    if (!filter_var($url, FILTER_VALIDATE_URL)) {
         $errors['url'] = "введен некорректный адрес сайта";
    }
    Ответ написан
  • Как правильно составить условие IF?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Написано же черным по белому, обращаетесь к $response['error'] как к массиву, а там строка.

    Сначала var_dump($response), а потом уже условия писать.
    Ответ написан
    Комментировать
  • Импорт из CSV в MySQL, как решить проблему с кириллицей?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Таблица в БД должна иметь кодировку utf8mb4
    При записи в БД необходимо сообщить базе данных, в какой кодировке поступают данные.
    Ответ написан
    Комментировать
  • Конвертирование Unix времеми в понятную дату почему не работает?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Учим азы житейской логики.

    Чтобы заявлять что "Конвертирование Unix "времеми" в понятную дату не работает", нельзя конвертировать "то что приходит из базы". Потому что ты не знаешь, что приходит из базы.

    Чтобы делать такие заявления, надо брать метку времени юникс, и конвертироввть именно её.

    А если конвертирование не работает при получении данных из базы, то взять полученные данные двумя пальчиками и внимательно посмотреть на свет: а что ж у тебя такое диковинное лежит в базе данных под видом метки времени Юникс. оператор var_dump() тебе знаком?

    В общем, главное правило программиста - не только совершить какое-то действие, но и проверить, что на вход были поданы корректные данные, а на выходе лежит то что ожидалось.
    Ответ написан
    2 комментария
  • Лучший способ авторизации через php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    "Не читайте до обеда советских газет".

    86% статей в интернете написаны чудовищными дителантами, которые сами едва десяток операторов освоили.
    Иногда к прочим данным также добавляют IP или UserAgent которые также проверяются и обновляются при взаимодействии со скриптом авторизации. Иногда таблица в БД разносится на несколько.

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

    Без контекста сложно понять, что имеется в виду.

    Общее правило - не доверять голословным утверждениям. Если автор понимает, о чем пишет, то сможет и объяснить ту или иную рекомендацию или оценку.

    Из перечисленного выше я бы только добавил защиту от подбора пароля.
    Ответ написан
    1 комментарий
  • Почему не работает функция php?

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

    Для этого надо правильно соединяться с mysqli.
    Не одной строчкой, а указывая все нужные параметры. В частности режим отображения ошибок:
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    И тогда БД сможет тебе наконец сказать, что ей не так.

    Если взять код mysqli.php по ссылке выше, то правильный, безопасный, и сообшающий о своих ошибках код будет таким
    function SendNotice($conn, $p1, $p2) {
        $sql = "SELECT `id` FROM `users` WHERE `login` = ?";
        $row = prepared_query($mysqli, $sql, [$p1])->get_result()->fetch_assoc();
        if (!$row['id']) echo 'Ошибка!';
        $sql = "INSERT INTO `notifications` VALUES (null, ?, 0, NOW(), ?)";
        prepared_query($conn, $sql, [$row[id], $p2]);
    }

    И вызываться она должна так
    include 'mysqli.php';
    SendNotice($conn, 'test', 'Test text');
    Ответ написан
    2 комментария
  • Генерация php кода и его исполнение из бд, возможно ли?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Какой-то бред.
    Элементы перемещаются с помощью CSS, "РНР код" здесь вообще не при чем.

    Чудовищнее всего здесь ответы: "очень-очень осторожно", "нужно делать валидацию". При этом спроси их - что именно осторожно? Какую именно валидацию? - не ответят. Потому что простого ответа нет, надо учитывать кучу деталей. А в итоге все равно станутся дыры.

    В общем, генерировать РНР код можно, но только на этапе разработки. Генерировать РНР код на основе пользовательского ввода - это ад и харакири.
    Ответ написан
    6 комментариев