这是一个我一直试图解决的棘手问题......
问题发生在移动网站上。 我使用codeigniter创建表单,将一些值传递给db,然后将用户重定向到用户发送的文章。
问题是,当在Android WebView(这是一个自定义应用程序)时,也可能在其他移动设备上,所以当用户点击后退按钮时,它会重新发送数据并再次发布文章。当用户点击后退按钮时,文章会被发布很多次,没有任何警告。
有什么建议吗?有人有这个问题吗?
哦,顺便说一句,如果整个历史记录被删除(不确定是否可能,因为它的客户端,我不喜欢使用javaScript)并且用户点回按钮,他将是从应用程序中取出,我不想发生。
答案 0 :(得分:0)
通过POST加载的页面将导致浏览器要求用户重新提交信息以查看页面,从而导致该页面再次发生的操作。如果页面是通过GET请求的,并且在查询字符串中有变量,则会发生同样的事情,但是会无声地提示(不会再次提示用户)。
最好解决此问题的方法是使用POST/REDIRECT/GET pattern。我在一个关于processing payments that I wrote for Authorize.Net的例子中使用过它。希望这能指出你正确的方向。
答案 1 :(得分:0)
我解决了类似的问题(也在手机中)。
生成一个令牌(15个字符的随机字符串)并保存在SESSION ['token']中,即
将此令牌保存在html表单的隐藏输入中。
当提交表单时,在触摸数据库之前,将提交的令牌与会话1进行比较,以防匹配,继续并取消设置()会话令牌,否则错误令牌不匹配。