unset对于session变量有时不起作用 我自己写的代码 if(isset ($_SESSION['Dt'])) { $date=$_SESSION['Dt']; unset ($_SESSION['Dt']);}为什么有时不起作用?有时要点四次才起作用?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在php中销毁变量有很多不同的方法。如:unset();session_unset();session_destroy();但session变量作为特殊的变量,不同的销毁方式更会产生不同的结果。unset()在php3时其使用后会返回一个boolean值,但在php4及以后的版本,其只是一个没有返回值的语句。如果在函数中unset()的一个全局变量或者一个通过引用传递的值,则其只能在局部销毁变量,在调用环境中的变量却会保持调用unset()前一样的值。如果unset一个静态变量,则静态变量及其所有引用都会被销毁。如果想unset一个globals变量则可以借用GLOBALS数组来销毁:unset($GLOBALS['str']);unset($_SESSION['str'])则可以删除单个的$_SESSION['str']变量。若使用unset($_SESSION);则删除服务器上的所有SESSION文件session_unset()删除当前所有的session值,其结果同session_destroy(); 楼上不需要解释这个 这些我明白的 unset是删除单个变量 我的意思是 代码执行到unset再执行echo 却依然能输出 session变量 例如if(isset ($_SESSION['Dt'])) { $date=$_SESSION['Dt']; unset ($_SESSION['Dt']); echo $date;}这里仍然能输出$date的值,多点几次就不能输出了,这就是我的意思。麻烦各位大哥不要再长篇大论了。 <?phpsession_start();$_SESSION['Dt']="kk"; echo "<a href='22.php'>aaa</a>";?>22.php<?phpsession_start();if(isset ($_SESSION['Dt'])) { $date=$_SESSION['Dt']; echo $_SESSION['Dt']."*****************"; unset ($_SESSION['Dt']); echo $_SESSION['Dt'];}?>貌似没发现你说的情况还有你把$_SESSION['Dt']赋值给$date 当然可以输出了 $date=$_SESSION['Dt']; unset ($_SESSION['Dt']); echo $date;你都赋值给$date了,unset的又不是$date,当然会输出.... 按结构看,赋予了$date,你清空session以后,$date也会一直存在的,怎么会多点几下就没了呢??楼主要是说:echo $_SESSION['Dt'],如果还有值,那就是难题了! 你消除的是$_SESSION['Dt'],却输出$date,自然会有结果;如楼上所说,如果unset ($_SESSION['Dt'])之后还输出$_SESSION['Dt']就是个解释不清的难题了,可能是你遗漏了什么,你看看之前的代码。 现在我发现问题了,session变量不知道为什么一旦建立后老是存在,我用网址传递了一根Dt,$_SESSION['Dt']也会跟着$_GET['Dt']变化 session变量在你不消除它,或者浏览器不关闭的情况下一般不消失,你传递过去的时候如果session变量的值还会变的话,肯定是被重新赋值了,你贴一些代码上来吧。 为什么无法上传文件啊? 初学者,有地方请教。 大家帮我想想PHP数组把2个数组相加之后怎么不让他改变key的顺序..谢谢了~ Discuz!的一个问题 帮我看看这代码里哪里错了?怎么修改啊 一个文章分页问题 如何传递参数到preg_replace_callback的回调函数 框架访问问题()在线等候 如何用SQL在页面分类输出相关最新更新新闻 为什么PHP链接不上数据库 上传不了数据 大神帮忙看看 PHP 5.3 register_globals Warning 如何去掉? 如何优化多个条件的switch和if语句?
$date=$_SESSION['Dt'];
unset ($_SESSION['Dt']);
echo $date;
}这里仍然能输出$date的值,多点几次就不能输出了,这就是我的意思。麻烦各位大哥不要再长篇大论了。
<?php
session_start();
$_SESSION['Dt']="kk";
echo "<a href='22.php'>aaa</a>";
?>
22.php<?phpsession_start();
if(isset ($_SESSION['Dt'])) {
$date=$_SESSION['Dt'];
echo $_SESSION['Dt']."*****************";
unset ($_SESSION['Dt']);
echo $_SESSION['Dt'];
}
?>貌似没发现你说的情况还有你把$_SESSION['Dt']赋值给$date 当然可以输出了
unset ($_SESSION['Dt']);
echo $date;你都赋值给$date了,unset的又不是$date,当然会输出....