PHP Запретить повторную отправку формы

pligin

Команда форума
Администратор
Чтобы запретить повторную обработку отправленной формы после обновления страницы нужно добавить пару строчек кода.
К примеру имеем форму
HTML:
<form action="" method="post">
    <input type="text" name="amount">
    <input type="submit" name="go" value="Выполнить">
</form>
и обработчик формы
PHP:
if(isset($_POST['amount'])){
    //тут обработка
}
Для предотвращения повторной отправки формы при перезагрузке нужно сделать следующее:
1. Перед формой добавить генерацию рандомного числа и сохранение его в сессию
PHP:
$_SESSION['hash'] = rand(1, 9999999);
2. Добавить рандомное число в форму
HTML:
<form action="" method="post">
    <input type="text" name="amount">
    <input type="hidden" name="hash" value="<?=$_SESSION['hash']; ?>" />
    <input type="submit" name="go" value="Выполнить">
</form>
3. В обработчике проверить существование этого рандомного числа в запросе POST и соответствие его числу, сохраненному в сессию
PHP:
if(isset($_POST['amount'], $_POST['hash']) AND $_SESSION['hash'] == $_POST['hash']){
    //тут обработка
}
В итоге получится, что только по нажатию на кнопку "Выполнить" произойдет обработка данных, при перезагрузке страницы и отправке повторно данных обработчик не сработает.

Благодарности сюда:
ЮМани 41001909383013
Payeer P8706145
 

geronimo

Местный
серег если я правильно помню скрипт, то подобное реализовано в файле новости( в админке)
 

pligin

Команда форума
Администратор
серег если я правильно помню скрипт, то подобное реализовано в файле новости( в админке)
но не все это знают и понимают.
я только что выполнял такую работу и поэтому решил сделать небольшой мануал
 
Верх