保留POST数据的帖子重定向

时间:2014-10-25 14:05:47

标签: php forms redirect

由于Chrome兼容性问题,我一直试图弄清楚如何在不使用js的情况下阻止多个表单提交。我通读了几篇在线文章,其中一篇提到了pgr模式。

我目前正在为我的所有通知使用Flash消息(错误,信息等消息保存到会话,显示,然后取消设置)

在阅读了关于pgr模式之后,我决定尝试在我的帖子检查下方放置一个标题重定向

if (!empty($_POST['create'])) {
    header('Location:'.$fullUrl); 
    // Sanitize, Validate, Process
    // If No Errors Complete Form
}

当我提交表格时,即使我正在重定向,我仍然可以访问我的帖子变量并且有0个问题,我不必担心多个表单提交,错误和成功正确显示。我想知道为什么我在发布后立即重定向时仍然可以访问帖子数据。

我正在使用表单令牌来防止csrf攻击,这会以任何方式对此产生负面影响,因为正在重新加载页面并保留post变量。我应该使用一种特殊的方法吗?我不必担心在提交后页面被刷新,因为我在完成处理时重定向。我只需要防止垃圾邮件提交按钮在每次按钮点击时处理表单,导致多个数据库插入等。

2 个答案:

答案 0 :(得分:0)

您可以在重定向和使令牌无效之前验证CSRF,保存在CSRF检查已通过的会话中,并继续执行重定向,在该重定向中检查CSRF检查通过的会话。这样,在第二次提交时,您将收到相同的令牌,该令牌已失效,CSRF将失败并阻止重定向。

答案 1 :(得分:0)

header();

重定向您,但脚本会继续执行,直到结束或退出();