什么是最好的方法停止的一种形式被再加工时,用户命一个回来按钮吗?

我下的 后/重新定向/获得的图案, 所以我没有问题,如果F5推,但后按钮仍然提供了机会,重新提交形式。如果这种形式是信用卡处理的网页,这是不好的。

这个问题已经要求有点 在这里,, 但该措辞和答案的质量差并不具体针对这个问题。

我form.php 提交给自己。如果没有错误,在输入数据后提交的,用户被重新定向到form_thanks.php.击中背部(和"发送"或"重新提交")一旦重新提交form.php (不好!) 然后把他们带回来form_thanks.php.

还请包括解决方案不涉及使用会议,如果可能的话。

有帮助吗?

解决方案 2

这应与单次使用令牌来完成,或随机数。在PHP /服务器应该包括这个令牌在隐藏的表单字段。

应该保存所有最近的令牌的列表,每个表单提交的时候,应该检查是否令牌是最近的有效凭证清单。

如果它不在列表中,那么不重新处理的形式。结果 如果它是在列表中,然后处理的形式,并且从列表中删除该标记。

令牌可以会话中被处理或不只是一个会话简单的数据库表。令牌应该是用户特定的,但。

这也避免 CSRF 攻击的推荐的方式。

其他提示

我会做它用不同的方式。提出了一个隐藏的输入与随机字符串作为值,当它提交商店随机字符串中的会话。设置一个简单的检查,看看他们是否已经贴吧,如果他们有不接受输入。

只是想大声这里。但关于后一个变化是什么/重定向/获取当最终得到的是不实际的最终搞定;),而是,它反过来又总是自动转发到真正的最后一页,这样如果用户点击后退按钮时,他们返回右后卫那里他们来到?

编辑:

好吧,考虑到OP的评论,这里的另一个想法。对于表单提交的URL可以作出需要的参数是好的只有一个用途。该令牌,就可以产生(使用MD5或类似)之前提交表单,并且可以存储在数据库中(响应别人的建议,您的要求,而无需使用会话的解决方案)。的形式被处理后,此令牌将被在数据库中标记为已经被使用。使得当页面返回给用相同的标记,可以采取措施,以防止表格数据的重新提交给后端。

晚的答案,但人们可以通过使用基于AJAX的溶液完全避免的处理;就不会有与包括与此处理方案的随机数,但通过使用异步查询其操作成功,将用户重定向,请求不会被重复清爽,逼人退,或比点击按钮以外的任何一个问题。

这也很容易实现其防止按钮从任一被按压两次或被“锁定”如果由嵌入到处理程序请求的请求时发生了什么事情的机构(无论是高电平与PrototypeJS或jQuery的或低与您的手卷功能菜单)的机制来启用和请求完成,并且当禁用按钮第一火灾,分别

我觉得这回将带给形式到它的网页被重新定向之前的状态,如果是这样的情况下,具有与值开始说的属实,那么一旦提交表单的隐藏输入/变量或什么的,如果该值为true,将其更改为false,然后提交,否则返回false

尝试这种情况:

<SCRIPT type="text/javascript">
    window.history.forward();
</SCRIPT>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top