如何创建一个仍然登录的登录系统(只要用户不点击退出)虽然浏览器已关闭?
使用$_SESSION
时,浏览器关闭时它就消失了。因此,我们可以使用$_COOKIE
,但它看起来不像会话那么安全。
yahoo,facebook,twitter或任何网站如何创建他们的登录系统,所以当用户关闭浏览器时,它会保持登录状态?使用IP? $ _SESSION? $ _COOKIE?或者什么?
谢谢
答案 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也将过期。