首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何禁止用户在特定时间段之前查看页面?

如何禁止用户在特定时间段之前查看页面?
EN

Stack Overflow用户
提问于 2011-11-21 09:36:38
回答 3查看 284关注 0票数 1

我想建立一个在线测验网站。

假设考试在上午10:00开始,学生在上午9:45登录考试。每当学生点击“参加考试”按钮时,他/她就无法访问试卷,因为考试时间是上午10:00,距离考试开始还有15分钟。

现在我想放一些Javascript或PHP代码,它将禁止学生提前考试,如果学生提前来了,它将显示一个秒表,其中显示考试时间之前的剩余时间,当当前时间等于考试时间时,他/她将被直接重定向到试卷页面。

EN

回答 3

Stack Overflow用户

发布于 2011-11-21 10:11:47

任何客户端都是可破解的。坚持纯服务器端。

为什么不是一个非常简单的PHP页面,当加载时,检查时间并适当地重定向?

test.php

代码语言:javascript
运行
复制
   if ( now() < $test_start_time)  
   {  
     header('Location: come_back_later.php');  
     Die;  
   }  
   // test page goes here
票数 2
EN

Stack Overflow用户

发布于 2011-11-21 09:44:50

我不相信JavaScript,因为用户可以在他/她的浏览器上禁用Javascript来绕过安全保护。你应该考虑一些服务器端的方法,也许是一些在特定的日期和时间发布你的网站的脚本。

您没有指定您的操作系统和web服务器,但是无论您使用的是Linux/Apache还是Windows/IIS,从批处理脚本执行类似的操作都不会太困难。

更新

为你的应用程序准备两个登录页面,其中一个页面的主体内容类似于this app will be available starting at 10 AM,并创建一个任务(Control Panel-> Admin Tools -> Task Scheduler),它将在给定日期的上午10点用真实的登录页面替换这个临时登录页面。这足够简单了吗?

票数 0
EN

Stack Overflow用户

发布于 2011-11-21 10:29:18

在您想要禁止提前访问的每个PHP脚本的顶部,您可能希望包括如下内容:

代码语言:javascript
运行
复制
if (mktime(12, 0, 0, 1, 1, 2012) > time()) {
    require 'waiting.php';
    die;
}

您应该检查mktime() PHP documentation以了解如何指定您希望用作阈值的日期和时间。

当当前时间小于2011年1月1日中午时,上面的示例将include waiting.php脚本。die函数阻止PHP加载页面中的任何其他内容,从而有效地阻止访问。当当前时间超过您的mktime()时间时,将不会触发includedie调用,页面将正常加载。

请注意系统时间。 mktime()将使用系统时间,该时间可能与要运行测试的时区不同。在调用mktime()之前,您应该使用date_default_timezone_set()设置时区。

例如:

代码语言:javascript
运行
复制
date_default_timezone_set('America/Los_Angeles');

最后。正如在其他评论中提到的,JavaScript检测本身并不可靠,这不仅是因为它很容易被规避,还因为不能保证用户的时间与服务器的时间相同。

假设您想要在超时完成后刷新页面。我将在waiting.php中包含以下内容:

代码语言:javascript
运行
复制
<?php
    $miliseconds_remaining = (mktime(12, 0, 0, 1, 1, 2011) - time()) * 1000;
?>
<script type="text/javascript">
    window.setTimeout(function() {
        window.reload(true);
    }, <?php echo $miliseconds_remaining;?>);
</script>

这将强制页面在时间到期时自动刷新,并忽略浏览器的缓存。此解决方案将刷新页面,而不考虑服务器和用户之间的时区差异。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8206380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档