1

尽管浏览器关闭,如何创建仍然登录的登录系统(只要用户不会单击注销)?

使用$_SESSION时,关闭浏览器后消失。所以,我们可以使用$_COOKIE,但它看起来不如 session 安全。

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

谢谢

4

5 回答 5

2

确保您不使用会话 cookie 来识别会话。为此,请使用session_set_cookie_params()以延长 cookie 的使用寿命。

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

于 2013-06-23T03:08:53.960 回答
2

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

于 2013-06-23T03:10:01.497 回答
2

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

另一种安全措施是使用数据库来验证 cookie。这将有助于一些安全性。我不是安全专家,您可能仍应考虑其他安全措施,但这应该可以帮助您入门。

于 2013-06-23T03:12:32.233 回答
2

看起来 StackOverflow 和 Youtube 使用Local Storage

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

于 2013-06-23T03:15:57.643 回答
1

正如 Oswald 所说,不要使用$_SESSION,因为它会在浏览器关闭时结束。

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

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

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

编辑

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

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

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

$session = $_COOKIE['session_key'];

下一部分是你的值将被存储在哪里,这将是你将存储在数据库中的会话密钥,以供获取并与用户匹配,现在的值$session将是什么。

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

于 2013-06-23T03:11:10.157 回答