javascript - PHP 双击困境

标签 javascript php double-click

我们遇到了用户双击我们应用程序中的按钮以从一个屏幕转到另一个屏幕的问题。

我们已经在我们的按钮上实现了 ( onclick="this.disabled=true" ),但我们确信它并不总是足以阻止快速手指双击。

一个简单的例子:-

屏幕 A 有四个输入字段和一个继续按钮。当按下继续按钮时,控制权将传递给服务器端例程以验证信息、设置一些 session 变量并调用屏幕 B。

偶尔会发生的事情是:-

第一次点击时,服务器端例程被调用并开始验证信息和设置 session 变量。第二次点击控制并再次调用服务器端例程并开始验证信息和设置 session 变量 -> 对我们来说, session ​​变量已经设置,这突出了问题。

我们已经研究过代币,但认为它们不会解决我们的问题。

我们认为,由于每个 PHP 应用程序都容易受到此双击问题的影响,因此必须有一种标准方法来解决它,但我们还没有找到。

如果您已经解决了这个问题,那么如果您愿意给我们一些关于我们如何解决这个问题的见解,我们将不胜感激。

* 感谢您的回复。 Loic 和 Brian Nickel - 很难区分,因为两者都通过时间戳或 GUID 来使用 token 方法。我们将不得不回过头来重新审视代币。经过讨论 - 作为我们的首选解决方案,我们将采用 GUID token 概念。

最佳答案

由于双击基本上会提交相同的表单两次,您可以检查两次提交之间的时间戳。

我将以 stackoverflow 为例,因为这个网站很棒。

假设我在服务器端对这个问题投了赞成票,如果我的 POST 请求有效,那么我的 POST 请求将被处理并保存。

然后服务器端,在处理请求之前,他们将检查在过去几秒内是否未发布相同的表单(不是吗?)。

无论如何,我的意思是,为您的表单命名,并在验证后在您的用户 session 中放置一个时间戳,这样您就可以在规定的时间内拒绝他们发布相同表单的帖子。

祝你好运。

关于javascript - PHP 双击困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22172725/

相关文章:

javascript - jQuery 替换 mouseup 函数中的 href 属性

php - 如何在新查询中使用分解数据?

php - 谷歌组合图问题

java - 如何检测 JavaFx 双击 listView

winapi - GetDoubleClickTime 意外返回 0

javascript - 卡住力定向网络图并在 D3 中可拖动

javascript - 使用空格键播放和暂停声音

javascript - Node JS 安装提前结束

php - 代码点火器 : 404 Page Not Found The page you requested was not found

javascript - 在 D3 中双击更改节点的颜色