#1 Зашита от F5 (повторная передача данных))
Ранне почемуто этот момент меня мало интересовал, но сейчас решил уделить ему своё внимание.
О мерах: предотвращение повторной передачи данных методом $_POST (если пользователь не специально или предномеренно обновил страницу)
Знающим людям этот пример известен, а не знающим будет полезен.
Итак:
есть страница с формой (регистрация или авторизация - не суть)
Цитата |
<form method='POST' action='post.php'>
<input type='text' name='login'>
<input type='pass' name='password'>
<input type='submit' value='пошёл !'>
</form> |
есть страница куда эти данные отправляются (об обработки этих данных в целях безопасности я писать не буду - это другая тема)
Цитата |
<?php
session_start(); // стартуем сессию
if (empty($_SESSION['post_ok'])){ // проверяем - если сессия пуста то
// получаем данные
// обрабатываем
// записываем
$post_ok = 'true';
session_register('post_ok');
}
else { // если сессия не пуста то:
echo "Ваши данные уже были переданы и записаны";
}
?> |
Это только алгоритм, т.к. предназначение каждой формы может иметь специфический характер , например если форма регистрации - то ещё необходимо проверить - может такой логин уже занят.
P.S. МОЖНО НЕ ИСПОЛЬЗОВАТЬ СЕССИИ, А СДЕЛАТЬ РЕДИРЕКТ ЧЕРЕЗ HEADER и POST будут очищены.
|