У меня на сайте есть следующий код (с использованием php и smarty), чтобы попытаться избежать повторной отправки формы при нажатии клавиши f5:
if ($this->bln_added == false) {
if (isset($_POST['submit'])) {
$this->obj_site->obj_smarty->assign('title', $_POST['tas_heading']);
$this->obj_site->obj_smarty->assign('desc', $_POST['tas_description']);
}
} else {
$this->obj_site->obj_smarty->assign('title', '');
$this->obj_site->obj_smarty->assign('desc', '');
unset($_POST);
}
По умолчанию bln_added имеет значение false, но при успешной отправке формы изменяется на true. Переменные smarty title и desc используются в шаблоне для хранения там содержимого формы в случае ошибки пользователя, и им нужно изменить введенные данные.
Если форма отправлена успешно, она устанавливает bln_added = true, поэтому второй бит кода должен не только очищать поля формы, но также и пустой $ _POST. Но если я нажму f5, данные поста все еще будут там.
Есть идеи?