session_destroy()在PHP中做了什么?

Pix*_*ech 6 php session

在PHP手册中,session_destroy()函数的描述是:

session_destroy()销毁与当前会话关联的所有数据.它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie.要再次使用会话变量,必须调用session_start().

我对此描述感到困惑.如果此函数销毁所有会话数据,那么为什么与会话关联的全局变量不会被取消?为什么我们可以再次使用会话变量?

hak*_*kre 5

我对此描述感到困惑.如果此[ session_destroy()]函数销毁所有会话数据,那么为什么与会话关联的全局变量不会被取消?为什么我们可以再次使用会话变量?

会话数据是与会话相关联的数据.会话由其名称(会话名称)及其ID(会话ID)定义.

通过使用该函数,所有这些会话(名称+ id)数据都将被销毁.

允许您读取/设置该数据的变量容器仍然存在,因此您可以对该数据进行操作(例如,可能存在类似上一个活动的信息,这是注销,并且您希望在注销时存储最后一个活动或所以在某些日志或数据库中,为什么要删除它?这会产生反效果,因为你想快速销毁(或提交)会话,例如当你只知道只读访问时,将会话数据保存在内存中,但是提交会话已经因为没有必要保持开放了).

请记住,即使这些变量都是访问权限,$_SESSION它们也不再是会话的一部分.也许这是令人困惑的部分?

顺便说一下,我的描述并不完全正确.PHP仅通过id在内部标识会话数据,因此您可以更改会话名称,session_destroy()并且仍会删除会话数据,因为会话ID未更改.