我需要关于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():尝试销毁未初始化的会话
如果我使用未设置
,而不是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().
我用google搜索它,到处都得到session_destroy()
用于销毁整个会话的答案(但在上面的代码中我仍然可以访问会话变量)并且session_unset('one')
仅用于取消设置单个会话varbele(但在上面的代码中,如果我使用session_unset('one')
,所有会话变量都会被取消)。
所以,请帮助我了解会话的工作原理,以及在记录用户session_unset()
或session_destroy()
时应使用的代码。
答案 0 :(得分:3)
使用session_destroy()
后,会话cookie被删除,会话不再存储在服务器上。 $_SESSION
中的值可能仍然可用,但它们不会出现在下一页加载中。
根据PHP
void session_unset ( void )
session_unset()
函数释放当前注册的所有会话变量,不带任何参数。
unset($_SESSION['name']);
将仅删除名称数据。
答案 1 :(得分:3)
非常简单,
session_unset - 释放所有会话变量,但会话ID不会被销毁
session_destroy - 销毁注册到会话的所有数据,调用此函数的第一个会话应该注册。
取消设置($ _ SESSION ['VARIABLE_NAME']) - 这将取消您传递的变量值。
在您的示例中,直接调用 session_destroy()是不正确的,因此您可以看到会话中存在的变量值,您可以为已注册的会话调用session_destroy。
由于 阿米特
答案 2 :(得分:1)
我猜它已被破坏但内存尚未发布,所以你仍然可以看看它。而unset将其设置为null。