2012-09-14 87 views
-1

我试图找出下面这段代码有什么问题,每当我尝试使用Internet Explorer注销时,我无法做到这一点,它只是几次重新加载或关闭浏览器后退出。即使在注销IE 8和9后,会话也不会被破坏

<?php 
//Start session 
session_start(); 
require("../../class-settings.php"); 
function write_at_sess_destroy(){ 
    $time=date('h:i:s A',time()); 
    $sql="update " . DB_PRE."user_master set `guid` = '',`user_first_login`='0' WHERE user_id ='". $_SESSION['user']."'"; 
    $sql_log= "update " . DB_PRE."user_log set logout_time='$time' where user_id='{$_SESSION['user']}' and logger_id='{$_SESSION['DYNAMIC_LOGGER_ID']}'";  
    if(mysql_query($sql))if(mysql_query($sql_log)) return true; 
} 
if(write_at_sess_destroy()){ 
    function unset_sessions(){ 
     session_start(); 
     if($_SESSION['adminlang'])unset($_SESSION['adminlang']); 
     unset($_SESSION['loginID']); 
     unset($_SESSION['utype']); 
     return true; 
    } 
    if(session_destroy()){ 
     header("Location:../../../"); 
     exit; 
    } 
    else{ 
     echo "error...";  
    } 
} 
?> 
+0

您从哪里调用'unset_sessions'?为什么这个函数有'session_start'? – Daniel

+0

不知道这是否是错误,但HTTP/1.1头文件需要一个绝对URI作为参数»Location:而不是相对位置../../../参见:http://de2.php。 net/manual/en/function.header.php – donald123

+0

您可以在注销时将会话值设置为false,然后根据值是否为false来确定登录状态? –

回答

0

你为什么不能简化:

<?php 
    session_start(); 
    require("../../class-settings.php"); 
    function write_at_sess_destroy(){ 
     $time=date('h:i:s A',time()); 
     $sql = "update " . DB_PRE."user_master set `guid` = '',`user_first_login`='0' WHERE user_id ='". $_SESSION['user']."'"; 
     $sql_log = "update " . DB_PRE."user_log set logout_time='$time' where user_id='{$_SESSION['user']}' and logger_id='{$_SESSION['DYNAMIC_LOGGER_ID']}'";  
     if(mysql_query($sql))if(mysql_query($sql_log)) return true; 
    } 
    if(write_at_sess_destroy()){ 
     session_regenerate_id(); 
     session_destroy(); 
     $_SESSION = array(); 
     header("Location: ../../../"); 
     exit; 
    } else { 
     echo mysql_errno() . ": " . mysql_error() . "\n"; 
    } 
?> 
+0

代码简洁,好了,但我得到同样的问题。 – SleepingDragon

+1

@SleepingDragon:如果你的问题显然没有解决,你为什么接受答案? – codeling