d*****l 发帖数: 8441 | |
c***c 发帖数: 21374 | 2 用php自带的session管理
【在 d*****l 的大作中提到】 : 实现安全logout. : 谢谢!
|
c***c 发帖数: 21374 | 3 发信人: ggxxzz (古香斋), 信区: BuildingWeb
标 题: 我想
发信站: BBS 未名空间站 (Wed Jan 9 16:57:23 2008)
楼主问的是server如何知道一个given session id(can be already expired,
也就是您上
面讲的那个cron job如何知道一个session已经过期) 是否过期,而非如何enfor
ce session expiration(那才是上面的回答)。
【在 d*****l 的大作中提到】 : 实现安全logout. : 谢谢!
|
c***c 发帖数: 21374 | 4 发信人: ggxxzz (古香斋), 信区: BuildingWeb
标 题: 恩
发信站: BBS 未名空间站 (Wed Jan 9 13:02:23 2008)
code是最好的解释,你琢磨一下就明白了:
假设session是file storage:
public function isSessionExpired($sessionId)
{
if(!$sessionId) $sessionId = session_id();
$sessExp = ini_get('session.gc_maxlifetime');
$sessSavePath = ini_get('session.save_path');
$sessFile = "{$sessSavePath}/sess_$sessionId";
if(!file_exists($sessFile) || (time() - filemtime($sessFile) > $sessExp))
return true;
else return false;
【在 d*****l 的大作中提到】 : 实现安全logout. : 谢谢!
|
c***c 发帖数: 21374 | 5 发信人: lihao0129 (lihao), 信区: BuildingWeb
标 题: Re: 恩
发信站: BBS 未名空间站 (Wed Jan 9 16:28:25 2008), 转信
最省事的是用 cookie,设定一个expire-time
在每一个 request 后面都 re-send 这个 cookie。
这样可以保证 expire-time时间内没有活动的话 cookie
自动过期,它carry的 session_id 也自动失效。。
当然光这样client侧很容易hack你,你可以在server
端定制一些cron jobs定期删除那些存在DB或文件系统
里面过期的session记录...
客户端关闭cookie的比较不爽,我一般都给它们加上
了特别的URI信息.属于不受欢迎的访问者..
【在 d*****l 的大作中提到】 : 实现安全logout. : 谢谢!
|
l*******9 发帖数: 177 | 6
这个,sever侧的cron job可以制定个固定的时间同时删除,是针对site-width
的所有sessions,无论是 file-based 的或是 DB-based,脚本都不难,且不需要
用到 httpd 的资源
过期cookie则是针对每个访问者,得用 httpd 资源,两者并不完全等同。。
【在 c***c 的大作中提到】 : 发信人: ggxxzz (古香斋), 信区: BuildingWeb : 标 题: 恩 : 发信站: BBS 未名空间站 (Wed Jan 9 13:02:23 2008) : code是最好的解释,你琢磨一下就明白了: : 假设session是file storage: : public function isSessionExpired($sessionId) : { : if(!$sessionId) $sessionId = session_id(); : $sessExp = ini_get('session.gc_maxlifetime'); : $sessSavePath = ini_get('session.save_path');
|