我希望以下问题适用于所有主流浏览器Opera,Internet Explorer,Chrome,Safari和Firefox
我想创建一个应用程序,用户必须按照页面Text1.php, Text2.php, Text3.php
的顺序才能完全创建考试。
问题是,用户可以随时点击back
或forward
浏览器按钮,或通过输入页面网址访问其他页面。
所以我的问题是:
如果用户点击back
或forward
浏览器按钮,则会显示一个提示框或小窗口,说明:
如果您在创建评估时不想离开此页面 你想离开页面,然后你会发回"菜单"页 并且失去了这次考试的所有细节。点击下面的链接:
离开评估
如果您想创建当前评估,那么 请点击以下链接:
继续评估
如果用户在评估创建页面Text1.php, Text2.php OR Text3.php
上,并且用户尝试更改网址中的网址以访问其他页面,则会显示相同的窗口或提示框或上方。
我的问题是,如果在使用网址或浏览器按钮时显示框,然后如果用户点击Continue Assessment
或导航到menu.php
,则可以保留在当前页面上用户点击Leave Assessment
链接。有人可以提供一个如何实现这一目标的样本吗?我需要它在所有主流浏览器中工作。
由于
答案 0 :(得分:2)
您可以在会话中设置服务器端cookie(PHP可以很好地处理它),例如,可以使用页面的数组和可以看到页面的数组。
然后,每次加载页面时(您可以将其放在包含文件中),您的脚本会验证(服务器端)用户在评估中的最后一页,如果用户尝试返回,那么您的脚本告知:'你不能回去评估'。
使用JavaScript,您可以在onclick事件之后进行处理之前获得所需的警告。
这笔交易是: - 在会话中存储用户标识 - 附加一个具有页面状态的数组或一个指示唯一可能的下一页的'ponter'。所以:当页面1加载时,指针存储'page2的字符串,初始验证永远不会让用户再次加载页面1,或第3页等。 - 那就是全部。
抱歉英语。不是美国人。 ;)
答案 1 :(得分:0)
您最好的选择是使用javascripts onbeforeunload
事件。
window.onbeforeunload = function() {
}
答案 2 :(得分:0)
您可以使用此选项 -
弹出一个包含确定和取消按钮的对话框window.onbeforeunload= 'Your text here';
您不能放置按钮(离开作业等),因为出于安全考虑,浏览器不允许这样做。
在w3标准中没有指定onbeforeunload事件,因此某些标准严格的浏览器不支持它。众所周知的例子是Opera。
答案 3 :(得分:0)
最方便的浏览器端解决方案似乎是window.beforeunload
解决方案,除了我要描述的内容外,我建议使用它。
作为PHP页面常规逻辑的一部分,在用户会话中设置一个他们看过当前页面的标志。因此,在Page1.php
中,您可以设置seen1
,在Page2.php
中设置seen2
,依此类推。
现在是重要的一部分。在每个脚本的顶部,在设置标志或向用户发送任何内容之前,检查会话中的标志是否与它们应该匹配。因此,例如,在Page1.php
上,您希望没有设置任何标记,Page2.php
您希望设置seen1
但不设置seen2
或{{1} }}
如果标志不匹配,您可以使用标志来确定它们应该在哪个页面上并将其重定向到那里而不是显示页面。如果您愿意,可以设置一个会话变量来提醒他们已经发生这种情况(在显示警报后清除它)。
请注意,要使其正常工作,您必须发送必要的标题,以防止浏览器或其他任何内容缓存该页面。
答案 4 :(得分:0)
为什么不设置会话变量
$_SESSION['on-page']="page1.php";
if($_SERVER['PHP_SELF']!="page1.php"){ die('Please go back and finish the previous page.'); ?>
那样的东西?