2012-09-05 103 views
0

所以我有一个注销按钮,链接到一个名为logout.php的脚本,标准的东西。是否session_destroy();仍然工作?

Logout.php在一分钟是这样的:

<?php 
session_start(); 
$sid = session_id(); 
echo $sid; 

session_destroy(); 
session_unset(); 

session_start(); 
session_regenerate_id(true); 
$sid = session_id(); 
echo $sid; 
?> 

这个代码在互联网上做一些研究(和堆栈溢出),并使用简单的后未来:

session_start(); 
session_destroy(); 

Didnt工作。

所以当前的脚本会产生这样的:

a920o3mmfhh7gldak4ki4nure5 
Warning: session_destroy() [function.session-destroy]: Session object destruction failed in (File Path)p on line 7 

Warning: session_regenerate_id() [function.session-regenerate-id]: Session object destruction failed in (File Path) on line 12 
a920o3mmfhh7gldak4ki4nure5 

已session_destroy已经贬值?因为我看了手册,并没有说它已经过了,而且通常是最新的。如果没有,任何人都可以看到它为什么不能破坏我的会话?

+0

这是奇数,你用什么PHP版本,什么操作系统? –

+0

服务器上安装了PHP 5.2.6。 – Bohdi

+1

我收到这样的错误,工作100%罚款,但在Ubuntu上使用PHP 5.3.16 –

回答

1

使用此注销:

session_start(); 
$_SESSION = array(); 

if (ini_get("session.use_cookies")) { 
$params = session_get_cookie_params(); 
setcookie(session_name(), '', time() - 42000, 
$params["path"], $params["domain"], 
$params["secure"], $params["httponly"] 
); 
} 
+0

这是不行的,它只是给我的另一个错误:a920o3mmfhh7gldak4ki4nusg1 警告:session_regenerate_id()[function.session-再生-ID]:Session对象销毁(文件路径),第7行 a920o3mmfhh7gldak4ki4nusg1 – Bohdi

+0

失败你检查你的会话php.ini中的.save_path并检查是否具有正确的权限? – Nin

+0

我的服务器是由第三方公司运行的,我把它放在php.ini中? – Bohdi

0
if(isset($_SESSION)){ 
    unset($_SESSION); 
} 
+0

即使没有错误,但不会破坏会话,用户仍然登录 – Bohdi

+1

如果全局'$ _SESSION'被破坏..你怎么能告诉用户仍然登录? – nick

+0

我可能是愚蠢的,但因为我执行该脚本,如果会话被破坏,然后当我尝试指向index.php我应该重定向到login.php,因为它在我登录之前工作。但它允许我自由漫游网站,而无需重定向。再次抱歉,如果我错过了什么。 – Bohdi