表格在返回后重新发送

时间:2013-01-31 14:45:17

标签: php codeigniter redirect mobile mobile-website

这是一个我一直试图解决的棘手问题......

问题发生在移动网站上。 我使用codeigniter创建表单,将一些值传递给db,然后将用户重定向到用户发送的文章。

问题是,当在Android WebView(这是一个自定义应用程序)时,也可能在其他移动设备上,所以当用户点击后退按钮时,它会重新发送数据并再次发布文章。当用户点击后退按钮时,文章会被发布很多次,没有任何警告。

有什么建议吗?有人有这个问题吗?

哦,顺便说一句,如果整个历史记录被删除(不确定是否可能,因为它的客户端,我不喜欢使用javaScript)并且用户点回按钮,他将是从应用程序中取出,我不想发生。

2 个答案:

答案 0 :(得分:0)

通过POST加载的页面将导致浏览器要求用户重新提交信息以查看页面,从而导致该页面再次发生的操作。如果页面是通过GET请求的,并且在查询字符串中有变量,则会发生同样的事情,但是会无声地提示(不会再次提示用户)。

最好解决此问题的方法是使用POST/REDIRECT/GET pattern。我在一个关于processing payments that I wrote for Authorize.Net的例子中使用过它。希望这能指出你正确的方向。

答案 1 :(得分:0)

我解决了类似的问题(也在手机中)。

  1. 生成一个令牌(15个字符的随机字符串)并保存在SESSION ['token']中,即

  2. 将此令牌保存在html表单的隐藏输入中。

  3. 当提交表单时,在触摸数据库之前,将提交的令牌与会话1进行比较,以防匹配,继续并取消设置()会话令牌,否则错误令牌不匹配。

  4. 希望它有所帮助。