Q
网页过期
0
A
回答
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>
原谅我,如果该脚本没有做究竟应该如何,从我使用过这样的东西开始,这已经很长时间了。
相关问题
- 1. 网页已过期
- 2. 网页已过期例外
- 3. kentico IE'网页已过期'
- 4. 解决在IE8中过期的网页
- 5. 错误 - 网页已在PHP中过期?
- 6. 经典ASP。网页已过期。错误
- 7. 过滤网页
- 8. 通过网页
- 9. 帧通过网页
- 10. 经过HTML网页
- 11. 定期的网页加载
- 12. 定期刷新网页
- 13. 使用Firebase过期网址
- 14. 当JSF(Richfaces)按下后退按钮时,网页过期提交
- 15. 为什么cookie在关闭网页后过期?
- 16. 网页已过期ie7无后退按钮
- 17. 在后退按钮上显示“网页已过期”
- 18. 如何在我的网页上设置过期标题?
- 19. 如何在IE中避免“网页已过期”
- 20. 检查网页是否被修改/已过期用Ruby
- 21. 在IE中,网页已过期错误只发生在HTTPS上
- 22. 过期网页上点击浏览器后退按钮
- 23. 会话过期后重定向到先前浏览的网页
- 24. 通过硒在网页自动化期间链接不打开
- 25. 如何从浏览器返回/转发时的网页过期
- 26. 将Cookie设置为当用户浏览网页时过期
- 27. 错误网页已在IE程序asp.net上过期
- 28. 网页总是过期,IE7,(?)代理缓存
- 29. 警告:页面已过期
- 30. 检票页面过期
你打算如何防止截图/打印? – ceejayoz 2012-04-13 16:29:47