从php.net文档中:
session_destroy —销毁注册到会话的所有数据
session_unset —释放所有会话变量
我的三部分问题是:
这两个功能看起来非常相似。
两者之间的真正区别是什么?
两者似乎都删除了注册到会话的所有变量。它们中的任何一个是否实际上破坏了会话本身?如果不是,您如何完成此任务(销毁会话本身)。
这两个函数都没有删除客户端的会话cookie是否正确?
从php.net文档中:
session_destroy —销毁注册到会话的所有数据
session_unset —释放所有会话变量
我的三部分问题是:
这两个功能看起来非常相似。
两者之间的真正区别是什么?
两者似乎都删除了注册到会话的所有变量。它们中的任何一个是否实际上破坏了会话本身?如果不是,您如何完成此任务(销毁会话本身)。
这两个函数都没有删除客户端的会话cookie是否正确?
Answers:
session_unset
只是清除$_SESSION
变量。等效于:
$_SESSION = array();
因此,这只会影响局部$_SESSION
变量实例,而不会影响会话存储中的会话数据。
与此相反,session_destroy
销毁存储在会话存储器中的会话数据(例如文件系统中的会话文件)。
其他所有内容保持不变。
local $_SESSION variable instance vs session data in the session storage
。据我所知,有1000个像我这样的人没有明白你的意思。谢谢
session_unset();
只需清除所有会话变量的所有数据即可。
session_destroy();
删除所有会话。
session_start();
session_destroy();
$a = "1234";
$_SESSION[a] = $a;
$_SESSION[a]
是NULL
。
session_start();
session_unset();
$a = "1234";
$_SESSION[a] = $a;
$_SESSION[a]
是1234
。
因此,我将使用:
session_start();
session_destroy();
session_start();
$a = "1234";
$_SESSION[a] = $a;
session_unset();
您什么也没做,因为您仍然可以使用session of $_SESSION["a"]
,那么它的用途是什么?
$_SESSION[a]
应该是$_SESSION['a']
并且与您在第一个示例中所说的不为空的方式不同
session_destroy()
将在移动页面后
session_unset()
删除会话,并在运行代码时删除会话。
session_start(); #it将在浏览器实时内存中创建一个虚拟数组(关联)
> $_SESSION['me'] = "Yadab";
> $_SESSION['you'] = "Avi";
>
> print_r($_SESSION); #will give, array( "me"=>"Yadab", "you"=>"Avi" )
> unset($_SESSION['me']); #only 'me' variable is removed fully (index & value)
> print_r($_SESSION); #now the array is Array("you"=>"Avi")
> session_destroy(); #will unset the values of all session variables, but indexes exists
> print_r($_SESSION); #Output, Array("you"=>undefined)
> #but some browser can store the value in cookies
> session_unset(); #will unset all the main variables not only the values
> print_r($_SESSION); #that means session array is now empty, like Array()
我认为应该同时使用session_destroy()和session_unset()来确保确实删除了会话数据。
session_unset()
之后session_destroy()
将毫无意义。使用session_unset()
以清除$ _SESSION超全局,或使用的所有键和值session_destroy()
删除整个会话; 不要仅仅为了“确定”而使用这两者,而是要信任函数来完成其工作。
session_destroy()
在退出当前页面之前不会取消设置sess超全局变量。