Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Обработка формы. PHP (https://javascript.ru/forum/server/85837-obrabotka-formy-php.html)

firep91613 05.04.2024 18:10

Обработка формы. PHP
 
Код:

<?php
        $errors = [];

        if (!empty($_POST)) {
                if (empty($_POST['first'])) {
                        $errors[] = 'Текстовое поле не заполенено';
                }

                if (empty($errors)) {
                        echo htmlspecialchars($_POST['first']);
                        exit();
                }
        }

        if (!empty($errors)) {
                foreach ($errors as $err) {
                        echo "<span style=\"color: red\">$err</span><br>";
                }
        }
?>

<form method="POST">
        <input type="text" name="first" value="<?= htmlspecialchars($_POST['first'] ?? '', ENT_QUOTES); ?>">
        <input type="submit" value="Send">
</form>

Цитата из книги: "Такой подход позволяет не только вывести сообщения об ошибках непосредственно перед НТМL-формой, но и сохранить все введенные ранее данные.

Как видно из приведенного примера, введенное в input-пoлe значение извлекается при помощи выражения $_POST['first'] и подставляется в атрибут value тега <input>. Это позволяет отобразить форму, заполненную введенным ранее значением."

Что тут имеется ввиду? Если после отправки формы нажать кнопку "Назад", то данные в инпуте окажутся те же, что и были введены до отправки? Что-то я не понял этого момента.

Nexus 05.04.2024 18:25

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

ps. этот код, мягко говоря, плохо пахнет.

firep91613 05.04.2024 19:48

Nexus,
спасибо. Теперь все ясно.

Цитата:

Сообщение от Nexus
ps. этот код, мягко говоря, плохо пахнет.

Ну это же учебный пример. Только начало после синтаксиса.


Часовой пояс GMT +3, время: 08:23.