我的网站上有以下代码(使用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键,则发布数据仍然存在。
有任何想法吗?
您的方法在理论上可以起作用,但是有一种更简单的方法。
成功提交表单后,执行重定向。没关系,但是会清除$ _POST。
header('Location: http://www.example.com/form.php');
就您而言,这听起来像您想重定向到已经打开的页面。如果要显示确认消息,请在URL上附加$ _GET参数。
希望这可以帮助,
汤姆