2

我有一个链接

<a href="new link">click me</a>

当用户单击“单击我”链接时,新链接页面将被重定向并在服务器端执行某些操作。问题是,如果用户单击浏览器上的后退按钮,它将返回到旧链接。如果用户点击链接“点击我”,新的链接页面将被打开,服务器端的处理将再次进行。如何预防这种情况?那就是即使用户回到旧页面,新的链接也不能再点击了

4

3 回答 3

2

在链接上生成一个唯一的 id,例如therequest.do?id=1234,并记录1234到数据库中,这样请求就不能再次运行。

  • 用户转到mypage.do,服务器生成 id1234并将日志作为未处理的数据库。
  • 用户点击链接到therequest.do?id=1234
  • 服务器进行处理,并将 id 标记1234为已处理。
  • 用户单击返回按钮。
  • 用户再次点击链接。
  • 服务器检查并看到请求1234已处理,因此在屏幕上生成错误消息:request has already been processed
于 2012-12-21T21:53:31.867 回答
0

您可以尝试创建一个新窗口,这将阻止最终用户返回,但是,您需要创建已访问状态以使按钮在 CSS 中消失。

<a href="new link" target="_blank">click me</a>

除此之外,在纯 HTML 中,没有办法阻止用户点击标准链接上的后退按钮。

于 2012-12-21T21:54:04.197 回答
0

您可以使用 Javascript 执行此操作。这是显示一种方法的示例代码:

<html>
<body>
<a href="#" onclick="f();">click me</a>
<script>
    var first = true;
    function f() {
        if ( first ) {
            first = false;
            window.open('http://www.google.com');
        }
    }
</script>
</body>
</html>

或者,您可以摆脱全局状态变量,并在单击链接后禁用或隐藏链接。

于 2012-12-21T21:56:49.580 回答