3

我希望以下问题适用于所有主要浏览器 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 中的网址以访问另一个页面,则将显示相同的窗口或提示框或更高版本。

Continue Assessment我的问题是,如果在使用 url 或浏览器按钮时显示该框,然后如果用户单击或导航到menu.php如果用户单击Leave Assessment链接,则能够停留在当前页面上。有人可以提供如何实现这一目标的样本吗?我需要它在所有主要浏览器中工作。

谢谢

4

5 回答 5

2

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

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

使用 JavaScript,您可以在 onclick 事件之后继续处理之前向用户发出您需要的警告。

交易是: - 在会话中存储用户标识 - 附加一个带有页面状态的数组或一个指示唯一可能的下一页的“ponter”。所以:当第 1 页加载时,指针存储“page2”字符串,以及初始验证永远不会让用户再次加载第 1 页或第 3 页等等。- 就这样。

对不起英语。不是美国人。;)

于 2013-01-13T21:40:07.447 回答
0

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

window.onbeforeunload= 'Your text here';

您不能放置按钮(离开分配等),因为出于安全原因,浏览器不允许这样做。

w3 标准中未指定 onbeforeunload 事件,因此某些标准严格的浏览器不支持它。众所周知的例子是 Opera。

于 2013-01-12T14:14:28.597 回答
0

为什么不设置会话变量

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

类似的东西?

于 2013-01-14T01:02:24.173 回答
0

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

作为 PHP 页面的正常逻辑的一部分,在用户会话中设置他们已经看到当前页面的标志。所以 in Page1.phpyou may set seen1, in Page2.phpyou would setseen2等等。

现在是重要的部分。在每个脚本的顶部,在设置标志或将任何内容发送回用户之前,检查会话中的标志是否与应有的匹配。因此,例如,在Page1.php您期望未设置任何标志时,Page2.php您期望seen1已设置但未设置seen2or seen3

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

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

于 2013-01-13T21:31:23.223 回答
0

你最好的选择是使用 javascriptsonbeforeunload事件。

window.onbeforeunload = function() {

}
于 2013-01-07T02:15:12.913 回答