|
|
|
| Пользователь вводит данные, отправляет их (обработчик находится на этой же странице).
Если он нажмет в своем браузере "обновить", данные отправятся снова. Как от этого избавиться? | |
|
|
|
|
|
|
|
для: alexander95
(02.05.2011 в 16:45)
| | После отправки header("Location: ссылка на страницу"); exit(); | |
|
|
|
|
|
|
|
для: alexander95
(02.05.2011 в 16:45)
| | Сразу после того, как обработчик закончил работу, останавливайте скрипт и осуществляйте перезагрузку страницы (как вариант переход на другую страницу) при помощи HTTP-заголовка Location и функции header(). Это позволит обнулить POST/GET-данные. | |
|
|
|
|
|
|
|
для: cheops
(02.05.2011 в 17:49)
| | Спасибо. А вариант с unset почему не подходит? | |
|
|
|
|
|
|
|
для: alexander95
(02.05.2011 в 19:45)
| | unset() уничтожит переменные только в рамках текущей сессии, перегрузка страницы заставит браузер снова послать POST-данные и сервер будет вынужден их воссоздать. | |
|
|
|
|
|
|
|
для: alexander95
(02.05.2011 в 16:45)
| | в свое время решил этот вопрос иначе. в форму которую заполняет пользователь добавлять скрытый инпут с какой-нибудь случайной строкой которая так же хранится в сессии, а при обработке формы проверять совпадает ли строка со значение в сессии, и если да то обрабатывать форму и менять число в сессии.
то есть вот форма
$_SESSION['rand']=rand()." - ".rand()." - ".rand;
<input type='hidden' name='rand' value='<?=$_SESSION['rand']?>' />
|
а вот обработчик
<?php
if ($_POST['rand']==$_SESSION['rand']) {
Обработать форму
}
?>
|
при обновлении страницы в $_POST['rand'] будет старое значение и форма не обработается | |
|
|
|
|
|
|
|
для: parczynski
(02.05.2011 в 21:00)
| | спасибо. | |
|
|
|
|
|
|
|
для: parczynski
(02.05.2011 в 21:00)
| | а если посетитель случайно откроет два раза страницу? | |
|
|
|
|
|
|
|
для: Гость
(04.05.2011 в 05:45)
| | тогда форма будет работать только на последней. либо на первой со второго раза.
но я думаю это вопрос из разряда "а если пользователь случайно пнет ногой тройник под столом и компьютер выключится, как сделать чтоб сайт остался на экране?" | |
|
|
|