#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 будут очищены.
|