0

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

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

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

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

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

4

2 回答 2

0

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

解决此问题的最佳方法是使用POST/REDIRECT/GET 模式我在我为 Authorize.Net 编写的关于处理付款的示例中使用了它。希望这会为您指明正确的方向。

于 2013-01-31T14:49:06.037 回答
0

我像这样解决了一个类似的问题(也在手机中)。

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

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

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

希望能帮助到你。

于 2016-04-13T13:36:45.643 回答