2012-04-13 24 views
0

如何让用户点击指向页面的链接,并且只能查看该页面一小时的访问权限?网页过期

在小时结束时,我想关闭标签页/窗口或将用户发送到其他页面。

我使用CodeIgniter作为我的框架。

这怎么办?

+0

你打算如何防止截图/打印? – ceejayoz 2012-04-13 16:29:47

回答

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或其他计划事件,清理过期的令牌给您的客户从额外的时间它会采取删除旧的记录保存。根据您的网站的大小,这个时间可能很长。

+0

这些都不涉及“我想关闭标签页/窗口或将用户发送到另一页”。 – ceejayoz 2012-04-13 17:23:24

1

您是否可以不在视图中添加元刷新,将用户移动到您想要的页面?沿着这些线路

东西:

<meta http-equiv="refresh" content="3600; url=http://example.com/"> 

如果您正在寻找关闭窗口/标签我想你可以使用一个小的JavaScript

<script> 
    setTimeout(360000, function(){ 
     window.top.close(); 
    }); 
</script> 

原谅我,如果该脚本没有做究竟应该如何,从我使用过这样的东西开始,这已经很长时间了。