暂时存储会话

时间:2011-05-31 15:02:57

标签: php session

我知道会话是服务器端的,所以,即使浏览器关闭,也可以保存会话?

例如,将会话保存一天。

请不要建议“cookies”,在这种情况下必须实施会话。

感谢

6 个答案:

答案 0 :(得分:1)

它们已被保存(请参阅php.ini文件中的会话路径)......实际上,真正的问题在于垃圾收集它们。

如果要更长时间存储它们,请编辑php.ini文件,或者定义自定义会话处理程序:

http://www.php.net/manual/en/function.session-set-save-handler.php

答案 1 :(得分:1)

session_set_cookie_params我认为你正在寻找。如果您将会话存储在cookie中,这将允许您设置该cookie的生命周期。因此,用户可以在该时间范围内的任何时间返回并仍然拥有其原始会话。

旁注

请阅读此内容,了解有关会话生命周期等的更多信息。 How do I expire a PHP session after 30 minutes?

答案 2 :(得分:1)

php_value session.gc_maxlifetime 86400

您可以在.htaccess中设置上述内容或在php.ini中修改session.gc_maxlifetime

这定义了PHP在垃圾回收之前为服务器上的用户提供会话文件的时间长度(上面的示例将允许服务器维持会话1天),但是会话通常依赖于会话ID cookie所以如果浏览器被重置或清除cookie,用户将不会重新连接到他们的网络会话(实际上,即使您没有意识到,您实际上也设置了会话ID cookie以在大多数情况下使用会话。)

答案 3 :(得分:1)

您可以创建数据库并在那里存储会话,在客户端只存储$ _SESSION ['id'],它是数据库中会话的ID。但是当你必须在会话中存储越来越多的变量时,这将变得很头疼。

答案 4 :(得分:1)

就像Gumbo说的那样,在URL中传递它。但我想解决这个问题的方法是,不要将SESSION_ID传递给Url,只需将其作为哈希或编码数据即可。

然后,只要此用户访问您的页面。如果此哈希/编码数据仍在有效时间范围内,并且此“匿名”用户具有该区域的权限,则可以检入标题。

THE DOWNSIDE:如果此用户传递此链接,则任何人都可以访问数据

UPSIDE:非常便携,易于实施


将SESSION_ID存储在绑定到用户IP的数据库中。每当此用户重新登录时,通过使用session_id

设置SESSION_ID来启动会话

THE DOWNSIDE:还有很多工作,如果用户ISP定期更改生成的IP,这将无法正常工作

THE UPSIDE:即使他删除了SESSION_ID Cookie,您也可以继续会话

答案 5 :(得分:0)

有很多方法可以做到这一点,但你可以做一个工匠:

制作一个脚本,为文件中的用户保存每个会话

OR

转到PHP.ini并更改会话生存时间

OR

使用session_set_save_handler功能更多信息here