PHP表单发布以防止导航/重新发布问题

时间:2011-01-12 09:28:14

标签: php html forms

我使用PHP / smarty创建了一个用户注册表单。表格回复自己,因为我不知道有什么理由不这样做。这里的问题是,如果用户刷新欢迎页面,代码将尝试重新创建帐户。从用户和安全角度来看,最好的方法是什么?

if (isset($_POST['submit'])) {
        /* Create customer account */
        $smarty->display($welcome_template);

} else {
        $smarty->display($form_template);
}

3 个答案:

答案 0 :(得分:2)

成功创建帐户后,执行HTTP重定向并将其发送到单独的“成功”页面:http://en.wikipedia.org/wiki/Post/Redirect/Get

答案 1 :(得分:0)

我想这是不这样做的原因。我认为标准解决方案是Post/Redirect/Get模式,这意味着:发出POST请求,然后重定向到确认页面的GET请求。然后可以毫无问题地重新加载该页面。

答案 2 :(得分:-1)

用户当然可以尝试在任何时候重新创建他们的帐户,因此必须小心。

根据您的需要,操作后页面显示确认, 最简单的解决方案是

//at end of post-action
echo '<script type="text/javascript">document.location = 'yoururl?cmd=confirm</script>';
die();

的问候, //吨