停止用户再次向前导航

时间:2012-02-08 10:38:16

标签: javascript html

如果用户访问过某个页面,并使用“返回”返回上一页,我该如何确保他们不再“前进”?

3 个答案:

答案 0 :(得分:2)

这可以通过一个简单的会话变量来解决。

page1.php中

<?php

if ($_SESSION['page2visited'] != 'YES') {

    echo "<a href='page2.php'>Page 2</a>";

}

?>

使page2.php

<?php

if ($_SESSION['page2visited'] != 'YES') {

    echo "Page 2 Contents!";
    $_SESSION['page2visited'] = 'YES';

}
else {

    echo "You have already viewed this page. You cannot see the contents again.";

}

?>

即使他们继续前进,这也可以防止他们再次看到/激活他们之前看到/激活过的page2.php内容。 (当然,除非他们重启浏览器)

答案 1 :(得分:1)

即使您可以阻止人们使用“转发”按钮,人们也可以再次手动输入相同的网址以“前进”。

设计网络应用时,您必须假设用户可以按任何顺序请求任何网址。设计您的应用程序,使其无论如何都能正常工作,这样只需按“后退”或“前进”或访问书签就无法调用破坏性操作。

当用户执行更改应用程序状态的操作时,最好是通过AJAX调用或发布表单而不是通过单击链接来调用这些操作。请记住,GET请求应该是幂等的 - 从概念上讲,GET是查看某些信息而不是执行操作的请求。还要记住,网页“页面”的概念最初就是这样 - 就像书中的“页面”一样,您可以查看任意次。当您翻书中的页面,然后再转回时,您不会因为翻页而发生一些不可逆转的更改。

答案 2 :(得分:0)

查看history.replaceState可能吗?见https://developer.mozilla.org/en/DOM/window.history