Как сохранять данные в форме
Думаю, многие из Вас встречали сайты, где Вы полчаса заполняли какую-нибудь форму, затем у Вас была какая-то ошибка, и Вы возвращались обратно к форме, однако, все данные были стёрты. Чтобы так не бесить пользователей, надо обязательно позаботиться о сохранении данных в форме. И об этом я сегодня расскажу.
Начнём с самого простого, а именно с использования атрибута autocomplete:
<form autocomplete="on">
Теперь браузер будет сохранять введённые ранее в эту форму данные. Однако, есть один нюанс. Это сохранение зависит от настроек браузера, и далеко не всегда, во-первых, сработает, а, во-вторых, сработает как надо. Поэтому я использую второй, более сложный, но и более надёжный способ.
Состоит он в том, что после передачи формы, все данные оттуда сохраняются в сессию, а при возврате обратно данные из сессии подставляются в форму. Например, вот такой PHP-скрипт всё это делает:
<?php
session_start();
$_SESSION["name"] = $_POST["name"];
$_SESSION["email"] = $_POST["email"];
header("Location: ".$_SERVER["HTTP_REFERER"]);
exit;
?>
И теперь HTML-код формы:
<form name="myform" action="request.php" method="post">
<input type="text" name="name" value="<?=$_SESSION["name"]?>" />
<input type="text" name="email" value="<?=$_SESSION["email"]?>" />
<input type="password" name="password" />
</form>
Вот так подставляются сохранённые данные в форму. Более того, Вы вправе выбирать, какие данные сохранять, а какие нет. Например, пароль сохранять однозначно не стоит, так же не стоит сохранять ввод капчи и другие аналогичные данные.
Таким образом, Вы теперь уже должны знать, как сохранять данные в форме.
-
- Михаил Русаков
Комментарии (7):
при этом к $_SESSION следует добавлять хотя бы strip_tags
Ответить
Лучше использовать Ajax при отправке данных с формы обработчику пхп(данные формы так и останутся на странице пользователя), иначе сохранение куков с важными данными у клиента может произвести к краже куков через уязвимости сайта, например с помощью XSS атаки.
Ответить
Михаил, как вы считаете, что луше писать <?php echo $a; ?> или <?=$a?> ?
Ответить
Здравствуйте Андрей. Пишите как Вам удобнее и как привыкли, разницы нет никакой, соответственно лучше или хуже быть ни то ни другое не может. И <?=$a?> этот вариант мне вообще не понятен. Возможно Вы имели ввиду: <? echo $a; ?>
Ответить
Мне кажется, что было б лучше сделать так: $_SESSION["name"] = htmlspecialchares($_POST["name"]);
Ответить
Подскажите, пожалуйста, возможно ли уже введенные данные в течении сессии сразу направить на конкертный e-mail?
Ответить
В принципе, вот неплохая статья на эту тему, используя JavaScript и sessionStorage: https://blog.lisogorsky.ru/session-storage-save-data
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.