php:虽然浏览器关闭但保存登录

时间:2013-06-23 03:03:01

标签: php login-control login-script

如何创建一个仍然登录的登录系统(只要用户不点击退出)虽然浏览器已关闭?

使用$_SESSION时,浏览器关闭时它就消失了。因此,我们可以使用$_COOKIE,但它看起来不像会话那么安全。

yahoo,facebook,twitter或任何网站如何创建他们的登录系统,所以当用户关闭浏览器时,它会保持登录状态?使用IP? $ _SESSION? $ _COOKIE?或者什么?

谢谢

5 个答案:

答案 0 :(得分:2)

确保您不使用会话cookie来识别会话。为此,使用session_set_cookie_params()为cookie提供更长的生命周期。

确保会话超时很长。这可以通过调整session.gc-maxlifetime配置选项的值来完成。

答案 1 :(得分:2)

您可以设置会话cookie的生命周期。默认情况下,它在浏览器关闭时。您可以在php.ini中执行此操作或查看http://php.net/manual/en/function.session-set-cookie-params.php

答案 2 :(得分:2)

在用户登录后加密cookie中的必要信息。 当他们访问您的网站时,解密cookie以获取您的信息。

另一项安全措施是使用数据库来验证cookie。这有助于一些安全性。我不是安全专家,你可能还应该考虑其他安全措施,但这应该可以帮助你开始。

答案 3 :(得分:2)

看起来StackOverflow和Youtube使用Local Storage

与cookie不同,本地存储没有过期日期,但是当用户登录或执行某些更改服务器上的内容时,您需要手动将本地存储中的数据发送到服务器进行验证(通过XHR或其他一些沟通方式)。当用户注销时,使用您保存登录信息的密钥调用window.localStorage.removeItem()。

答案 4 :(得分:1)

如Oswald所述,请勿使用$_SESSION,因为浏览器关闭时会结束。

会话变量存储为Cookie,因此创建自己的变量不是less secure

创建自己的COOKIES时,应将过期时间设置为很长时间,例如一年左右,以确保Cookie不会过期,并且用户将保持登录状态。

绝大多数生产网站都使用Cookie来保持会话,只需确保您的会话密钥足够随机,而其他客户端无法猜到。

修改

请参阅此链接,了解如何使用setcookie

setcookie("session_key", "somerandomstringrepresentingasessionkey", time() + 60*60*24*120);

以下内容将为您的网站设置一个名为session_key的会话密钥,这是您在运行时获取数据的方式:

$session = $_COOKIE['session_key'];

下一部分是您的值将存储的位置,这将是您将存储在要提取并与用户匹配的数据库中的会话密钥,$session现在的值是什么。< / p>

下一部分是到期之前的时间,这里我放了60 * 60 * 24 * 120,意思是当前时间加上60秒,60分钟,24小时,120天。这意味着在该确切时刻的120天内,即使浏览器在此之前关闭,该特定cookie也将过期。