2010-07-21 54 views
2

我正在使用下面设置会话变量/ Cookie的登录系统。 Chrome浏览器,它可以让你毫不费力地查看你的cookies,显然将它标记为PHPSESSID,过期时会显示“当我关闭我的浏览器时”。果然,当我登录时,关闭浏览器,然后打开一个新的浏览器会话,我不再登录。制作会话/ Cookie不确定

我该如何做到让用户保持登录是否浏览器是关闭?我想让它保持登录状态(永久,如果可能的话),除非有意注销完成。

由于提前,

约翰

$_SESSION['loginid'] = $row['loginid']; 

$_SESSION['username'] = $u;  

回答

0

你只需要在会话cookie设定在未来的到期日期。

0

您可以使用session_set_cookie_params来设置PHPSESSID Cookie相关设置。

//set cookie for 60 seconds: 
session_set_cookie_params(60); 

所以你只需用一些任意高的第二值来代替值60即可。

8

看看session_set_cookie_params() ...

第一个参数是$lifetime。将它设置为非0数字,这就是他们将在几秒钟内保持登录状态的时间。如果它为0,则在浏览器关闭后它将被删除。请注意,您需要自己存储会话数据,或者设置ini_set("session.gc_maxlifetime", $Lifetime);(以防止服务器删除旧会话)。但要注意,这可能会吃掉很多磁盘空间(并且打开拒绝服务攻击,攻击者通过连续产生新会话来吞噬所有磁盘空间)...

1年〜= 3156000(秒)

我诚实地建议实现一个“记住我”功能,而不是试图无限期地保持会话......记住我也会使用cookie,但它不会为非活动用户绑定服务器空间...

+4

+1代表“记住我”,而不是持久的会话。请记住,会话可以[根据年龄分开销毁](http://us.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime),即使Cookie仍然存在存在。 – Charles 2010-07-21 18:06:38

+0

感谢ircmaxell和Charles ......我要去关注一下Remember Me。你们推荐的任何优秀教程或网站? – John 2010-07-21 18:31:24

+0

有许多教程。尝试浏览下列网址:http://www.google.com/search?q=implement+remember+me+php – ircmaxell 2010-07-21 18:49:10