Home >Backend Development >PHP Tutorial >php session删除不了,三个界面login.php,logout.php,index.php

php session删除不了,三个界面login.php,logout.php,index.php

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-23 14:08:281479browse

login.php
验证帐号密码就不发了,发设置session的代码给大家看
session_start();
$_SESSION["userid"]=$rs[ID'];
$_SESSION["useracc"]=$rs[Acc'];
$_SESSION["username"]=$rs[Name'];
$_SESSION["usertype"]="user";
ob_start(); 
header("location:index.php");
ob_end_flush() 

index.php
if($_SESSION['userid']!=''){    
echo "登录成功";    
echo "退出";
}else{    
echo "登录失败";
}

logout.php
//第一种写法 
session_start(); 
$_SESSION=array();//把$_SESSION 数组清空 
setcookie(session_name(),"",time()-1); //把 cookie 清空 
session_destroy(); //删除本次 SESSION 

//第二种写法
session_start();
unset($_SESSION['userid']);  
unset($_SESSION['useracc']);   
unset($_SESSION['username']);  
unset($_SESSION['usertype']);  
session_destroy(); 

//最后都执行
ob_start();
header("location:index.php");
ob_end_flush();


但是不知道为什么,执行logout.php之后(两种写法都试过)返回到index.php的时候还是登录成功,那个$_SESSION里面的数据都还是存在。但是我中断logout.php跳转在前面打出$_SESSION里面是没有值了。 请高手指导一下到底是什么问题!


回复讨论(解决方案)

返回到index.php,是通过浏览器后退按钮吗?
那没有重新加载页面当然是不会变的

返回到index.php,是通过浏览器后退按钮吗?
那没有重新加载页面当然是不会变的


不是啊,就是使用的那个header那个里面的重定向跳转的,
在我本机是可以的,在服务器上就不行了
本机使用的是apache服务器上是iis

你一定有什么地方弄错了!
测试代码:
index.php

<?phpsession_start();if(isset($_SESSION['userid']) && $_SESSION['userid'] != ''){      echo "已经登录 <a href='logout.php'>退出</a>";}else{      echo "没有登录 <a href='login.php'>登录</a>";}

login.php
<?phpsession_start();$_SESSION["userid"] = 1;ob_start(); header("location:index.php");ob_end_flush();

logout.php
<?phpsession_start(); session_destroy(); //删除本次 SESSION ob_start();header("location:index.php");ob_end_flush();

你一定有什么地方弄错了!
测试代码:
index.php

<?phpsession_start();if(isset($_SESSION['userid']) && $_SESSION['userid'] != ''){      echo "已经登录 <a href='logout.php'>退出</a>";}else{      echo "没有登录 <a href='login.php'>登录</a>";}

login.php
<?phpsession_start();$_SESSION["userid"] = 1;ob_start(); header("location:index.php");ob_end_flush();

logout.php
<?phpsession_start(); session_destroy(); //删除本次 SESSION ob_start();header("location:index.php");ob_end_flush();


现在好像session_destory();这个方法在IIS里面无效了
我先$_SESSION = array();
然后在session_destory();
发现前面$_SESSION里面的数据都又回来了,所以导致一致是登录状态,
后面把session_destory();
给去掉了
不知道这样会出现什么样的错误或者是影响。
希望版主解救

session_unset() 

session_unset() 
把session数组清空的语句都使用了的
unset($_SESSION['userid']);这种
session_unset();这种
$_SESSION = array();这种
不管是哪一种,只要后面写上了session_destory()
里面的数据都又全部回来了。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn