防止手动页面刷新时重复记录插入

2 php refresh

我有一个问题只是浮出水面.

我在MVC环境中工作.我的接口类中的方法名称与请求模块和操作的方法名称匹配,即?module=test&action=action会导致调用的方法public function test_action() { }

在这个特殊的问题中,我有一个提交给自己的表格.如果验证通过,则会创建一条记录,然后我会显示另一个模块的模板.该模块需要一系列post变量,因为它在两个模块中使用.

我遇到的问题是,如果用户成功通过验证并尝试F5页面,则会创建另一条新记录等.

我怎样才能防止这种情况发生?

通常我会在成功插入后头重定向但在这种情况下我不能.

use*_*395 5

我会采取完全相反的方式.我甚至发现重定向是一种不正确的处理方式,因为更改位置并不意味着克服逻辑/形式问题.

正确的解决方案是:

  • 在隐藏的输入中为表单添加唯一的哈希值
  • 将哈希存储在服务器端会话中
  • 发送表单时,使用服务器上的哈希验证隐藏的输入哈希
  • 仅在表单正确验证时执行行插入.

如果您正在使用Zend Framework,那么您可以使用一个Zend_Form_Element_Hash类.