宝哥软件园

在PHP中使用SESSION的经验总结

编辑:宝哥软件园 来源:互联网 时间:2021-10-10

当一个会话被打开时,一个唯一标识浏览器的cookie(名为PHPSESSID,可以通过session_name())将被首先发送。当会话与session.save_handler=files相同时,将在服务器的指定目录(如temp)中生成一个不带后缀的文件。名称是复制代码:“sess _”会话id。

这就完成了基本设置。然后,在发起下一个http请求时,浏览器会先发送当前域名下的所有cookie名称和值,这样服务器就可以根据cookie中的session_id读取会话文件,而不会混淆该会话属于谁。这个步骤如下:SESSION向浏览器发送一个唯一的cookie变量session_id,它有一个名称和值。变量名(name)默认为PHPSESSID,变量值(value)为apach随机生成的字符串,类似于rvag 9m 368 vim7k 8g 4v 7 k2k ank 70。一般来说,session_id实际上是指这个唯一的字符串:rvag 9m 368 vim7k 8g 4v 7 k2k 70。具体来说,在FF: 的HTTP响应头下。

session _ start();以上句子完成了程序中的上述功能。如果浏览器没有发送PHPSESSID的cookie,它会发送过去,如果是这样,它会读取cookie,这样就可以保持相同的会话。好了,现在我们知道了会话的工作原理,可以推测,如果手动删除服务器端的文件sess _ rvag 9m 368 vim7k 8g 4v 7 k2k ank 70,那么会话就会失败,如果浏览器cookie失败,那么会话仍然会失败。在手动操作的情况下:在服务器端,可以使用session_ destroy()或session_ unset()将其禁用。浏览器端:可以直接吗?setcookie(' PHPSESID ','',123);让cookie过期,或者以另一种方式,但不是立即过期?session _ set _ cookie _ params($ time);//当前时间戳上的第二个,例如60,意味着它将在60秒后过期。SPAN style='COLOR: #ff0000 '不要使用时间戳自己设置时间。/SPAN上面提到的都是让会话提前到期,但是你想直接延迟会话吗?除了无法修改配置(session.gc_maxlifetime)之外,在php.ini中设置了session.gc_maxlifetime,此时将恢复session . GC _ probability/session . GC _ diffector的概率。此时如果启动GC进程,GC会读取会话文件的修改时间(mtime),从当前时间减去后发现大于session.gc_maxlifetime,立即删除。在这一点上,我们也知道如何保持这个会话,这个会话只能由session.gc_maxlifetime中的用户访问,每次访问会话时都会修改会话,从而增加session.gc_maxlifetime的生存时间。另外,说说session.cookie_lifetime,在浏览器中设置PHPSESSID的生存期。默认值为0。我发现在IE下是正常的,浏览器重启时cookie是无效的。FF继续存在。Session.cookie_lifetime可以用session_set_cookie_params、session _ set _ cookie _ params(60);//60s session _ start();Session.gc_maxlifetime和session.cookie_lifetime共同决定了会话的生存期。-只是在找。id=443354火狐有一个功能,你可以关闭火狐,它提供保存你所有的标签,然后你恢复浏览器,那些标签就会回来。这叫做会话恢复。我没有意识到的是,它还会恢复这些页面的所有会话cookies!它就像你从未关闭过浏览器一样对待它。这在某种意义上是有意义的,如果你的浏览器崩溃了,你会回到原来的位置,但是对于习惯于会话cookies被清除的web开发人员来说,这有点令人不安。我有一些几个月前的旧会话cookies,它们是由我总是在选项卡中打开的网站设置的。要测试这一点,请关闭浏览器中的所有选项卡,然后关闭浏览器并重新启动。我认为在这种情况下,你的站点的会话cookies应该是清晰的。否则,您必须关闭会话还原。这是火狐的会话保存功能,FF设计就是这样。您可以这样做,关闭浏览器中的所有选项卡,然后关闭浏览器并重新启动它来测试它是否仍然存在。

更多资讯
游戏推荐
更多+