php Как запретить передавать данные методом POST по F5 или по обновлению страницы браузера?

php Как запретить передавать данные методом POST по F5 или по обновлению страницы браузера?
Хочу чтобы данные отправились на сервер один раз и после нажатия обновить страничку больше то же самое не отправлялось и не создавались дубликаты в базе.
Такое бывает, что например заполнили форму, отправили ее, а ответа нет. Вы начинаете нажимать обновить страничку или F5 и браузер вам предлагает отправить еще раз тоже самое. И тем самым на стороне сервера создаются дубликаты. Это можно исправить вставив в код следующую функцию: header ("Location: имя_страницы");

Например:

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
	// Форма передала информацию
	$name = strip_tags($_POST["name"]);
	$age = $_POST["age"] * 1; // избавляемся от букв
	
	// Сохранение в cookie
	setcookie("userName", $name);
	setcookie("userAge", $age);
	
	// Обработка формы
	// ... 
	
	// перезапрос формы методом GET (избавляемся от повторной отправки формы методом пост)
	header("Location: " . $_SERVER["PHP_SELF"]);
	exit; // это только для сервера, чтобы он не тратил ресурсы для обработки конца файла. хотя браузеру уже улетит новая страничка
}
else {
	// Чтение куки
	if (isset($_COOKIE["userName"])) $name = $_COOKIE["userName"];
	if (isset($_COOKIE["userAge"])) $age = $_COOKIE["userAge"] * 1;
}
?>

<html><head></head>
<body>
<form action="<?=$_SERVER["PHP_SELF"]?>" method="post">
	Ваше имя: <input type="text" name="name"><br>
	Ваш возраст: <input type="text" name="age"><br>
	<input type="submit" value="Передать">
</form>
<?php
if (isset($name)) {	
	if ($name and $age) {
		echo "<h1>Привет, $name</h1>";
		echo "<h3>Тебе $age лет</h3>";
	}
	else {
		print "<h3>Заполните все поля!</h3>";
	}
}
?>
</body></html>


Внимание. Наш header находиться в том месте кода, где сервер получил данные методом поста! Если вы этот header засунете в другое место, где метод GET то попадете в цикличность и браузер (firefox) выдаст ошибку:
Неверное перенаправление на странице
Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.
Эта проблема может возникать при отключении или запрещении принятия кук.

или chrome:
На этой странице обнаружена циклическая переадресация



Оставить свой ответ:

Имя:*
E-Mail:
Вопрос:
Skolko buдет пять пдюс сeмь?
Ответ:*
QQpedia21.ru - cамые интересные вопросы