我从来没有想允许用户保持登录状态的任何时间的长短,所以我从来没有见过一个使用了“记住我” 功能。我开始思考它是如何做虽然并想澄清。

目前我储存我的会话在数据库中。什么一直困扰我的是怎么了,即使我没有明确设置一个cookie,一个被放置在我的浏览器。我有点困惑,因为会话是一个会话和Cookie是一个cookie。我看不出一个会话设置一个cookie。

我也想知道,简单地设置会话阵列中的另一个会话变量保持用户登录,就足够了或者我仍然需要设置cookie?

有帮助吗?

解决方案

  

什么一直困扰我的是怎么了,即使我没有明确设置一个cookie,一个被放置在我的浏览器。

一个会话处理器必须识别哪些会话属于哪个用户。

绝大多数会话库通过设置cookie做到这一点。

  

(IS)设置另一个会话变量会话阵列中保持用户记录在将足以或我仍然需要设置cookie?

大多数会话库设定的会话cookie 。这是没有指定到期时间的cookie。到期时,在浏览器关闭,并不足以实现“记住我”功能(该功能预计跨浏览器重新启动后持续下去,所以必须有一个明确的到期时间)。

其他提示

为了从您的数据库中提取会话数据备份需要密钥。这就是所谓的会话ID。

会话ID需要被存储在某个地方。无论是作为URL字符串的一部分,客户端会回,或者更常见的是,在客户端上的cookie。当请求被发布,会话读取从cookie中的值,并且知道从会话存储拉哪个记录回来。

这会自动发生。

使用会话的唯一原因是,如果你想保持数据是大于4KB(浏览器的限制);或者如果需要的时间从服务器提取数据比从会话存储器读取它大。

如果您要存储的数据量小于4KB我会强烈建议你刚才设置的cookie来开头。我一般存储的东西,如用户ID,用户名,和其他几个属性。请记住,这是微不足道的检查一个饼干值,所以这个信息应之前要在客户端被加密。

另一件事是,如果查询的时候拉你从原始来源需要的数据很小,那么选择这样做,与其把它放在会话。这样,当你真正需要的,而不是每一个页面加载它,你只能得到它。

解释Cookie和会话之间的关系:

PHP使用cookie来唯一地识别每个用户的会话。这是唯一可靠的方法,因为cookie被每次从服务器请求一个文件时,发送。使用cookie中的令牌,这也是会话标识符,PHP将查找tmp目录,看看是否存在会话。如果会话存在,变量从正确的文件加载,你将能够访问该届会议的变量。

因此,饼干存储所需要识别哪个用户使用哪个会话的会话标识符。这也是会话劫持是如何产生的,当人们可以改变会话标识cookie来使用其他人的会话标识符。

底层PHP会话实现设置cookie。你可以改变这一点,并在查询字符串中传递会话ID值,但我不建议这样做。你不使用cookie,PHP一样。它参照存储在cookie中的会话ID值来执行查找到的会话数据。

  

我也想知道,如果只是设置会话阵列中的另一个会话变量保持用户登录就足够了或者我仍然需要设置cookie?

一旦用户关闭浏览器,则会话被杀死,该cookie被删除。我不相信任何退出机制,坚持会话值,并有很好的理由。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top