在PHP中使用会话的经验总结
会议会议是开放的,会首先发送一个浏览器的唯一标识session_id cookie(命名为PHPSESSID)的session_name(访问),与session.save_handler =文件,在指定的目录服务器(如温度)来生成一个文件名是不。复制代码代码如下所示:
sess_ + 'session_id;
这就完成了基本设置,下次我们推出第一个浏览器的HTTP请求,将所有cookie的名称和值当前域名下,这样服务器就可以根据session_id代替混乱的会话cookie的会话文件读取。
这一步骤如下:
会议发出了一个独特的Cookie变量session_id到浏览器,它有一个名为session_id变量值,变量名(名称)默认为PHPSESSID,而变量的值(值)是一个随机字符串生成apach,类似rvag9m368vim7k8g4v7k2ank70。通常指的是唯一的字符串rvag9m368vim7k8g4v7k2ank70 session_id。
这是特定于FF的HTTP响应头下的。
session_start();
在程序中,上述句子完成上述功能。如果浏览器不发送Cookie发送PHPSESSID过去,它读取cookie,这样可以保持相同的会话。
好了,现在我们知道了会话的工作原理,我们可以猜测,如果服务器端的sess_rvag9m368vim7k8g4v7k2ank70是手工删除,那么会话无效。如果浏览器cookie失败,则会话也将失败。
在手册中:
在服务器端,您可以使用它
session_破坏()或session_ unset()
使其无效。
在浏览器端:
可以直接
setcookie('phpsessid ',' ',123);
让cookie过期,或者另一种方式,但不能立即失效。
Session_set_cookie_params ($time); / / the current time stamp on the 60 seconds, for example, that the 60 seconds expired, don't set yourself with timestamp + time.
所有这些都是为了让会议提前结束,但不可能直接推迟会议吗除了修改配置(会话。gc_maxlifetime),它不工作。在php.ini,session.gc_maxlifetime设置过期日期。在这个时候,对session.gc_probability / session.gc_divisor概率恢复。如果我们把这个时间和启动GC过程,GC将阅读会议文件的修改时间(时间),发现它比session.gc_maxlifetime在当前时间减去,它将删除一次。在这里,我们也了解如何保持这种对话。只有在session.gc_maxlifetime,用户必须具有访问和访问每一次修改会议,使会议能够得到更多的session.gc_maxlifetime存活时间。
此外,让我们来谈谈session.cookie_lifetime。在浏览器PHPSESSID设置默认时间是0,即是正常的,并重新启动浏览器cookie的失效。FF继续存在。建立session.cookie_lifetime可以使用session_set_cookie_params,
session_set_cookie_params(60); / / 60的session_start();
session.gc_maxlifetime和session.cookie_lifetime共同确定会话的生存期。
-------------------------------------------------------------
正在寻找Firefox cookie会话过期数据,请查找以下内容
这显然是由设计造成的。看看这个Bugzilla错误:https: / / / Mozilla Bugzilla。org show_bug cgiid = 443354。
Firefox有一个功能,你关闭Firefox,它提供保存你所有的标签,然后你恢复浏览器和那些标签回来。这叫做会话恢复。我没有意识到它也会恢复所有这些页面的会话cookie,它也像你一样对待它!从未关闭过浏览器。
这使意义,如果你的浏览器崩溃你马上回你在哪里,但有一点令人不安的Web开发者使用会话cookie被清除。几个月前我有一些旧的会话cookie,它们是由我在选项卡中打开的站点设置的。
为了测试这一点,关闭浏览器中的所有选项卡,以及右边、左边和第二个选项卡都是正确的。
这是Firefox的会话保存功能,这是FF设计的情况。你可以关闭浏览器中的所有标签,然后关闭浏览器并测试,看看是否仍然保存。