如果用户访问过某个页面,并使用“返回”返回上一页,我该如何确保他们不再“前进”?
答案 0 :(得分:2)
这可以通过一个简单的会话变量来解决。
<?php
if ($_SESSION['page2visited'] != 'YES') {
echo "<a href='page2.php'>Page 2</a>";
}
?>
<?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