关于php中 unset()函数 unset 销毁 sessoion 信息

javascript / 2012年11月21日 11时58分 / 12381人浏览
首先如何完全销毁session信息呢 1.销毁$_SESSION php脚本内的使用的$_SESSION[]数组 不能直接使用unset($_SESSION)  ,如果想用unset()可以分别销毁session数组内的值 如:unset($_SESSION['name'],..) 实例: 因为unset($_session)把_session 变量销毁 脚本结束时 无法将当前_session变量的内容写回文件中,所以,文件中存储的信息未发生变化; 而 unset($_session[‘a’]) 销毁数组中的一个值 脚本结束时候 session机制 将当前session变量信息 写回 文件中保存   可以为$_SESSION[]数组赋空值 $_SESSION = array()  或session_unset(); 2.销毁$_COOKIE['phpsessionid'] cookie内的sessionid Setcookie('PHPSESSIONID','',time()-1) 3.销毁服务器上的session存储介质(文件、数据库、内存等) Session_destroy()     另:unset()销毁指定的变量 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。   如果在函数中 unset()一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。

function unset_test(){

   global $a;

   $a = 'b';

   unset($a);

}

$a = 'a';

unset_test();

echo $a;//输出 b

  如果在函数中 unset()一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。

function unset_test1(&$pram){

   $pram = 'cc';

   unset($pram);

}

$c = 'c';

unset_test1($c);

echo $c;//输出cc 如果您想在函数中 unset()一个全局变量,可使用 $GLOBALS数组来实现:

function unset_test2(){

   $GLOBALS['d'] = 'dd';

   unset($GLOBALS['d']);

}

$d = 'f';

unset_test2();

echo $d;//输出空 如果在函数中 unset()一个静态变量,那么在函数内部此静态变量将被销毁。但是,当再次调用此函数时,此静态变量将被复原为上次被销毁之前的值。

function unset_test3(){

   static $num=0;

   $num++;

   echo $num;

   unset($num);

}

unset_test3();//输出1

unset_test3();//输出2

unset_test3();//输出3