2012-09-14 86 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