2015-11-14 12:32:32
php
删除会话,有三个方法数组
一、unset();
删除单个会话
<?php
session_register();
$_SESSION["admin"]="aa";
if(!empty($_SESSION['admin'])){
$myvalue=$_SESSION['admin'];
echo $myvalue;
}
//删除session,一个个地删除的
unset($_SESSION["admin"]);
echo $_SESSION['admin'];
?>
只能显示 一个,说明,删除了session
注意:
unset()不能够一次注销整个数组,这样会禁止整个会话功能 ,
如:unset($_SESSION)将全局变量$_SESSION销毁,并且没有办法将其恢复 ,用户也不能再注册 $_SESSION变量,
二、删除多个会话$_SESSION=array();
//删除多个会话,把一个空数组给$_SESSION,把以前的值覆盖了,这样并非将$_SESSION销毁 ,还能够从新赋值
<?php
session_register();
$_SESSION["admin"]="aa";
$_SESSION['name']="叶凌月";
$_SESSION['age']=16;
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
//删除多个会话,把一个空数组给$_SESSION,把以前的值覆盖了,这样并非将$_SESSION销毁 ,还能够从新赋值
$_SESSION=array();
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>
三、结束当前的会话:
session_destory();
一、出错 :
<?php
session_start();
$_SESSION["admin"]="aa";
$_SESSION['name']="叶凌月";
$_SESSION['age']=16;
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
//结束当前会话
session_destroy($_SESSION);
//session_unset($_SESSION);
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>
Wrong parameter count for session_destroy()
错误的参数计数session_destroy()
缘由 :
session_destroy();不须要添加参数 ,注销表明的是当前 的会话
注意:
使用session_destroy();要与session_start();一块儿用否则会受到警告
二、出错,以为session_destroy();
不起做用,为何仍是会把$_SESSION的值显示 ,是不是注销了还保存有一份在cookie里呢,可是没有建立cookie呀,无论先试试
<?php
session_start();
$_SESSION["admin"]="aa";
$_SESSION['name']="叶凌月";
$_SESSION['age']=16;
setcookie($_SESSION,"",time()-1);
//结束当前会话
session_destroy();
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>、
Warning: setcookie() expects parameter 1 to be string, array given
你给传递给strlen()的参数不是string类型的。
改成
结果仍是显示 了
缘由 大解决:
一、session 是一个会话,在session_start() 的时候创建。
2、$_SESSION 是一个全局数组,和其余的全局数组没有任何区别。只是php在建立一个会话的时候,会顺便建立一个全局数组来保存会话的内容,这个数组又恰好叫$_SESSION,和咱们本身去建立的其余数组没有什么不同。
3、session_start() 执行的时候,开启了会话,首先是若是该会话没有被建立,则在系统的tmp目录中建立了session文件(默认,可自定义),而且在当前会话的执行脚本建立全局数组$_SESSION,这时的$_SESSION是一个空数组。若是会话存在,则读取session文件中的内容,创建$_SESSION数组。
4、session_destroy() ,手册中明确的说道:destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie. To use the session variables again, session_start() has to be called.
不会删除 session 的全局变量和 session相关cookie,只是结束了此次会话。做为一个普普统统的全局变量,
若是咱们不须要乐得话,就将他 unset() 掉。若是想再次开启会话,就须要再一次session_start(),可是session_start() 从新创建会话,会从新初始化$_SESSION数组,session_start()以后$_SESSION 就又是一个空数组了
<?php
session_start();
$_SESSION["admin"]="aa";
$_SESSION['name']="叶凌月";
$_SESSION['age']=16;
//结束当前会话
session_destroy();
?>
<?php
session_start();
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>
修改下
总结 :
session_destroy();只是仅仅结束当前会话,并且是用以前要与session_start();一块儿用,session_start();是初始化变量$_SESSION至关于清除了数组里的变量
还有session_destory();与session_unset();获得的结果不同,
要同样,session_destroy();从新启动一次,session_start();cookie