如何在服务器端显示消息,如果我点击浏览器按钮


How to display message on Server Side if I click on browser button

我希望下面的问题适用于所有主要浏览器Opera, Internet Explorer, Chrome, Safari和Firefox

我想创建一个应用程序,其中用户必须遵循页面的顺序Text1.php, Text2.php, Text3.php,以便完全能够创建考试。

问题是,在任何时候用户都可以点击backforward浏览器按钮或通过输入页面url访问另一个页面。

我的问题是:

  1. 如果用户点击backforward浏览器按钮,将显示提示框或小窗口提示:

    创建评估时,您不应该离开此页面,如果如果你想离开这个页面,那么你将被送回"菜单"页面丢掉考试的所有细节。点击下面的链接:

    离开评估

    如果您想继续创建当前评估,那么请按以下连结:

    继续评估
  2. 如果用户在评估创建页面Text1.php, Text2.php OR Text3.php中的任何一个页面上,并且用户试图更改url中的网址以访问另一个页面,则将显示相同的窗口或提示框或以上。

我的问题是,这是可能的,如果框显示时使用url或浏览器按钮,然后能够留在当前页面上,如果用户点击Continue Assessment或导航到menu.php,如果用户点击Leave Assessment链接。有人能提供一个如何实现这一点的例子吗?我需要它能在所有主流浏览器上运行。

谢谢

您可以在会话中设置服务器端cookie (PHP可以很好地处理它),例如,包含仍然可用的页面的数组和包含已经看到的页面的数组。

然后,每次加载页面时(您可以将其放在包含文件中),您的脚本验证(服务器端)最后一个页面用户在评估中,如果用户试图返回,那么您的脚本通知:'您不能返回评估'。

使用JavaScript,您可以在onclick事件之后继续执行之前向用户提供所需的警告。

交易是:-在会话上存储用户标识-附加一个数组与页面状态或与'ponter',表明唯一可能的下一页。因此:当页面1加载时,指针存储'page2'字符串,并且初始验证永远不会让用户再次加载页面1或页面3,等等。-就这些。

英语不好意思。不是美国人。div;)

你最好使用javascripts onbeforeunload event.

window.onbeforeunload = function() {
}

你可以弹出一个确定和取消按钮的对话框使用-

window.onbeforeunload= 'Your text here';

你不能放置按钮(Leave assignment等),因为浏览器出于安全原因不允许。

onbeforeunload事件在w3标准中没有指定,所以一些标准严格的浏览器不支持它。最著名的例子就是Opera。

最方便的浏览器端解决方案似乎是window.beforeunload,我建议除了我将要描述的之外使用它。

作为PHP页面正常逻辑的一部分,在用户会话中设置一个标志,表示他们已经看到了当前页面。所以在Page1.php中你可以设置seen1,在Page2.php中你可以设置seen2等等。

现在是最重要的部分。在每个脚本的顶部,在设置标志或向用户发送任何内容之前,检查会话中的标志是否符合它们应该是什么。因此,例如,在Page1.php上,您希望没有设置任何标志,在Page2.php上,您希望设置seen1,但不设置seen2seen3

如果标志不匹配,您可以使用标志来确定它们应该在哪个页面上,并将它们重定向到那里,而不是显示该页。如果你愿意,你可以设置一个会话变量来提醒他们已经发生了这种情况(在显示警告后清除它)。

请注意,为了使此工作,您必须发送必要的标头等,以防止浏览器或其他任何东西缓存页面。

为什么不设置一个会话变量

$_SESSION['on-page']="page1.php";
if($_SERVER['PHP_SELF']!="page1.php"){ die('Please go back and finish the previous page.'); ?>

之类的?