2011-04-01 101 views
1

在某些网站上,例如脸书,Gmail,YouTube等,您可以勾选此选项(或者默认情况下就是这样),无限登录,直到您注销为止。无限次登录/会话?

你可以回来几天,你仍然登录。这是如何工作的?

我与session_start();工作和存储,例如,用户数据

$_SESSION['user']['id'] = 40;

如何改变这种代码,以便直到他们决定注销我的用户可以保持登录状态?

+1

它通过设置包含用于重新创建用户会话的一些数据(基本上重新记录它们)的cookie来工作。它不能通过扩展本地php的会话生命周期来工作,还有更多的事情需要创建一个系统,让您保持无限期登录。 – 2011-04-01 09:13:25

+1

可能重复: http://stackoverflow.com/questions/3128985/php-loginsystem-remember-me http://stackoverflow.com/questions/1354999/keep-me-logged-in最好的方法 – Zakaria 2011-04-01 09:13:25

回答

0

您可以将用户信息存储在cookie中,以便它们一直保留,直到您需要为止。并且每次用户访问您的网站时,都可以检查它,并根据您的Cookie信息初始化新会话。

setcookie(name,value,expire,path,domain,secure) 
0

如果我在PHP配置文件中回忆你可以在会话有效期设置为0,但是当用户存在他们的浏览器会话将到期。

您将不得不使用setcookie()并设置9999999(116天)这样的过期时间。客户端cookie与会话的问题在于“客户端”cookie不适合存储密码哈希等敏感项目。

+0

Cookie的生命周期与会话的生命周期无关。请参阅[我的答案是“如何在30分钟后过期PHP会话?”](http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-分钟/ 1270960#1270960)。 – Gumbo 2011-04-03 08:36:24