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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Сохранить текущую корзину, потому что именно это пользователь точно сейчас хочет купить.
    Молча ничего не добавлять.
    Вежливо показать сообщение "У вас с прошлого раза остались такие-то товары, добавить? Добавить к текущему заказу?".
    Если пользователь согласился - добавить отсутствующие ,пропустить сущестующие.
    Ответ написан
    Комментировать
  • Как принято делать настройки пользователя?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Правильно - добавить колонки.
    С точки зрения БД поле status_notice ничем не отличается от поля email.
    оба относятся к конкретному юзеру и значит оба должны лежать в одной таблице.

    И не надо слушать ересь про json.
    Ответ написан
    Комментировать
  • Регистрация пользователя как сделать лучше (правильно)?

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

    По поводу капчи.
    На сайт надо ставить только то, что нужно.
    Тебе сейчас капча не нужна? Вот и не ставь.
    Ответ написан
    8 комментариев
  • Существует ли какой-нибудь ресурс, ознакамливающий с понятиями и структурой cms?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Автор просто запутался в незнакомых буквах, не cms, a MVC.

    Если искать по правильным буквам, то информации мире, в том числе и на тостере
    Ответ написан
  • Как вывести данные из базы в формате JSON (с помощью php)?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ответ на вопрос Как вывести:

    echo json_encode($result->fetch_all(MYSQLI_ASSOC));


    Но проблема в том, что у тебя нет еще никаких данных, ты запрос ещё не составил.

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

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

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

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

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

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

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

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

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

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

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

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Надеюсь, вопрос закроют как дубль. Потому что ну сколько можно уже. "Я ничего не знаю, ни к чему душа особо не лежит, но хочу быть молодым перспективным владельцем стартапов, газет, пароходов поэтому скажите мне какой язык программирования делает людей богатыми и успешными. но только чтобы особо напрягаться не нужно было!"
    Ответ написан
    4 комментария
  • Как правильно настроить кодировку на нескольких языках?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Настроить кодировку на всех языках очень просто. В БД и браузере везде должна стоять UTF-8. Не в воображении, а в реальности:

    - Таблица в бд должна создаваться с charset=utf8
    - Соединение с бд в РНР должно задавать кодировку utf8 (с помощью специально предназначенной для этого функции)
    - Веб-сервер при ответе должен отдавать заголовок Content-type с charset=UTF-8
    Ответ написан
  • Как отправить ответ для recapcha?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Может быть, все-таки, не наглеть, и не делать гадости другим людям?
    Делать такие вещи - это как мусорить на общественном пляже.
    Тебе в данный момент так комфортнее, но ты так загаживаешь среду обитания для сотен людей.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    при соединении с БД надо задать кодировку utf8
    Ответ написан
    Комментировать
  • Как скрыть путь к файлу скрипта в form?

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

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Разумеется, только в БД.

    Маловероятно, конечно, но если вдруг проект разрастётся, то он будет разрабатываться не на коленке путем правки похапе файлов прямо на сервере, а через систему контроля версий и регулярный деплоймент командой разработчиков. И все эти "почти никогда не изменяемые данные" будут засорять историю правок и требовать ажно целого программиста ради добавления одного слова в статусы модерации.

    Или, если сформулировать короче, то данные должны лежать в базе, а в РНР файлах - только код.
    Ответ написан
    5 комментариев
  • Как выполнить инициализацию переменных перед загрузкой сайта?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Открою маленький секрет.
    Все 100% современных приложений работают именно таким образом - сначала они инициализируют начальные константы, а потом запускают приложение.

    Для этого надо всего лишь, чтобы файлы проекта не валялись как попало, а были организованы в разумную структуру. В частности, имели единую точку входа. А точнее - две, для веб-приложения и для утилит командной строки. Как это организовать на примитивном уровне, можно посмотреть здесь. Но лучше поставить уже себе фреймворк и научиться использовать РНР не как в каменном веке, а так, как его используют современные программисты в двадцать первом.
    Ответ написан
    Комментировать
  • Есть ли готовые скрипты защиты от парсеров для nginx?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    И тут Грегор понял, что произошло. Эти существа не могли тушить лампы: галлюцинация не в силах воздействовать на неодушевленные предметы. Он вообразил, что в комнате становится темнее и… Он сам расстрелял свои лампы! Подсознание опять его надуло. Теперь Теневик смело шагнул вперед. Бластер был бессилен.
    Роберт Шекли, "Призрак-5"


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

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

    Вот как на самом деле должен выглядеть твой код:

    if (empty($errors)) {
     
        $stmt = $db->prepare("SELECT count(*) FROM users WHERE email = ? OR login = ?");
        $stmt->execute([$email, $login]);
        $count = $stmt->fetchColumn();
     
        // Если найдены, значит логин/эмайл заняты, не регистрируенм, а выводим ошибку
        if ($count > 0) {
               exit("email или login занят!");    
        } else {
               $sql = "INSERT INTO users (login, email, password) VALUES (?,?,?)";
               $db->prepare($sql)->execute([$login, $email, $password]);
     
               echo '<div class="okreged">Вы успешно зарегистрированы! <a href = "/test/index.php">Перейти на главную</a></div>';
        }
     }
    Ответ написан
  • Логирование ошибок в файл в веб-приложении -- нормальная практика?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Логировать ошибки вообще - абсолютно нормально.

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

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

    Код получается ЗНАЧИТЕЛЬНО короче.
    Ответ написан
    Комментировать