我知道会话是服务器端的,所以,即使浏览器关闭,也可以保存会话?
例如,将会话保存一天。
请不要建议“cookies”,在这种情况下必须实施会话。
感谢
答案 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