我需要有关php会话的帮助。
我试过这段代码
<?php
session_start();
$_SESSION['one'] = "Hello";
$_SESSION['two'] = "World";
$_SESSION['three'] = "Welcome to session";
var_dump($_SESSION);印出来
array (size=3)
'one' => string 'Hello' (length=5)
'two' => string 'World' (length=5)
'three' => string 'Welcome to session' (length=18)然后,我取消了第一个会话。
unset($_SESSION['one']);
echo "Session one unset and only session two and three exist";
var_dump($_SESSION);然后打印出来
Session one unset and only session two and three exist
array (size=2)
'two' => string 'World' (length=5)
'three' => string 'Welcome to session' (length=18)如果我毁了会议
session_destroy();
echo "Session Destroyed <br />";
var_dump($_SESSION);但是什么都没有发生,我仍然可以将会话打印为
Session Destroyed
array (size=2)
'two' => string 'World' (length=5)
'three' => string 'Welcome to session' (length=18)但是如果我再次使用session_destroy();,它会给我一个警告
警告: session_destroy():试图销毁未初始化的会话
如果我使用unset来代替session_destroy()代码
session_unset('two');
echo "Session two unset";
var_dump($_SESSION);所有会话变量都未设置,我无法访问它打印的会话三变量
Session two unset
array (size=0)
empty而不是使用session_unset('two');,如果我使用session_unset();,那么它也会给出相同的结果。
那么,unset($_SESSION['one'])、session_unset('one')、session_unset()和session_destroy().之间的实际区别是什么?
我搜索了它,得到的答案是,session_destroy()用于销毁整个会话(但在上面的代码中,我仍然可以访问会话变量),而session_unset('one')只用于取消一个会话变量(但在上面的代码中,如果我使用session_unset('one'),所有会话变量都未设置)。
因此,请帮助我理解会话是如何工作的,以及在记录我们的用户( session_unset()或session_destroy() )时应该使用哪些代码。
发布于 2015-04-17 05:57:53
很简单,
session_unset -释放所有会话变量,但会话id不会被销毁。
session_destroy -销毁注册到一个会话的所有数据,要调用这个函数,第一个会话应该注册。
unset($_SESSION'VARIABLE_NAME') -这将取消您传递的变量值。
在您的示例中,直接调用session_destroy()是不正确的,因此您可以看到会话中存在的变量值,您可以为已注册的会话调用session_destroy。
谢谢阿米特
发布于 2015-04-17 05:35:57
使用session_destroy()后,会话cookie将被删除,会话不再存储在服务器上。$_SESSION中的值可能仍然可用,但它们不在下一个页面加载中。
根据PHP
void session_unset ( void )session_unset()函数释放当前注册的所有会话变量,并且不接受任何参数。
unset($_SESSION['name']);将只删除名称数据。
发布于 2015-04-17 05:30:21
我猜它已经被销毁了,但是内存还没有释放,所以你还可以看看它。而unset则将其设置为空。
https://stackoverflow.com/questions/29690993
复制相似问题