2013-02-24 47 views
0

我正在创建一个网站,登录和注销,并注册,但每次我想注销时出现错误如何解决它我认为eroor是在会话中这个错误让我发疯我做了很多关于解决问题的搜索,但我没有得到任何帮助我的解决方案。php mysql +会话登出错误

logout.php

<?php 
session_start(); 

session_destroy(); 

if(isset($_COOKIE['id_cookie'])){ 

setcookie("id_cookie", "", time()-50000,"/"); 

setcookie("pass_cookie", "", time()-50000,"/"); 

} 

if(isset($_SESSION['username'])){ 
echo("we could not log out try again!"); 
exit(); 
}else{ 
header("Location: home.php"); 

} 

?> 
+3

嗯,有什么错误? – 2013-02-24 01:08:23

+0

这个例子可能是有用的:http://stackoverflow.com/questions/3512507/proper-way-to-logout-from-a-session-in-php/3512570#3512570 – 2013-02-24 01:09:31

回答

0

不知道你的错误,但是阅读session_destroy会帮助你。

检查时if(isset($_SESSION['username'])){,如,根据手册我的猜测是错误是:

session_destroy(),删除所有与当前会话相关联的数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话Cookie。 要再次使用会话变量,必须调用session_start()。

您从不再次启动会话,因此您无法使用会话变量。

此外,对于出登录用户,在同一页面下,有利于进一步援助:

为了完全终止会话,想注销用户,会话ID也必须未设置。如果使用cookie传播会话标识(默认行为),则必须删除会话cookie。 setcookie()可用于此目的。

虽然它不在问题的范围之内 - 它将帮助您制作成功的注销脚本。

+0

先生,我需要从你的另一个帮助,如果它是可能的,我有一个profile.php代码错误[http://stackoverflow.com/questions/15046785/user-profile-data-does-not-appear-after-logging-in]你可以看看,也许帮助我解决了这个问题 – 2013-02-24 01:21:53

+0

@ user2097286我会对它进行掠夺。这个答案能帮助你吗? – Jon 2013-02-24 01:23:09

+0

有点因为我是新来的PHP,我不知道有关会议和饼干,所以我试图学习它,并得到帮助ANW谢谢你的回复和你的帮助 – 2013-02-24 01:26:15

0

session_destroy();破坏所有的会话,所以我没有遵循你的If语句来检查用户名会话点?

其次,你实际上并不需要括号内为回音:

echo("we could not log out try again!"); exit(); 

可以写为:

echo "we could not log out try again!"; exit; 
+0

你的意思是我不需要如果统计,因为从这个回声如果出现,不让我注销,让我疯狂 – 2013-02-24 01:29:25

+1

你不需要'if(isset($ _ SESSION ['username'])){'你破坏了会话,它不会被设置,因此它是一个浪费去检查。 – Sir 2013-02-24 01:32:15

0
<?php 
session_start(); 
session_destroy(); 
if(isset($_COOKIE['id_cookie'])){ 
    setcookie("id_cookie", "", time()-50000,"/"); 
    setcookie("pass_cookie", "", time()-50000,"/"); 
} 

header("Location: home.php"); 
exit(); 
?>