如何让用户点击指向某个页面的链接,并且只能查看该页面一小时的访问权限?
在一小时结束时,我想要关闭标签/窗口或将用户发送到另一个页面。
我正在使用CodeIgniter作为我的框架。
如何做到这一点?
答案 0 :(得分:1)
您是否可以在视图中放置元刷新,以便将用户移动到您想要的页面?
这些方面的东西:
<meta http-equiv="refresh" content="3600; url=http://example.com/">
如果您要关闭窗口/标签,我想您可以使用一点点javascript
<script>
setTimeout(360000, function(){
window.top.close();
});
</script>
请原谅我,如果那个剧本没有完全应该做的那样,那我用了很长时间就已经很久了。
答案 1 :(得分:0)
这可以使用cookie。我们的想法是使用您使用时间戳存储在数据库中的访问令牌创建cookie。
因此,当用户访问您的数据库时,您创建一个随机字符串并将其插入数据库。使用CodeIgniter,可以使用类似
的方法完成$this->load->helper('string');
$tokenKey = random_string('alnum', 32);
$this->db->insert('tokens', array('userid' => $userid, 'key' => $tokenKey));
tokens
表还应包含创建令牌的时间戳。这是因为即使我们为cookie添加了一个到期时间,这仍然可以摆弄,所以如果我们没有进行这种双重检查,用户可能会获得对该页面的永久访问权。
现在是时候实际设置cookie了。我们将到期时间设置为现在+ 3600秒(从现在起一小时)。
setcookie('tokenKey', $tokenKey, time()+3600, '/');
每当用户尝试访问受保护的页面时,您可以删除超过一小时的所有令牌(以确保您没有存储过期的令牌),然后查看表中是否存在令牌。如果确实如此,那还不到一个小时。
// delete old tokens
$tokenKey = $_COOKIE['tokenKey'];
// select token from database
或者,您可以使用cronjob或其他预定事件来清理过期的令牌,以便从删除旧记录所需的额外时间中保存客户端。根据您网站的大小,这个时间可能很长。