2013-12-19 145 views
0

我做了一個網站,我編程了一個會話,所以如果你沒有登錄你不能進入某些表單,但是當我登錄會話時,即使當我點擊登出按鈕時,我甚至會在它破壞會話再次送我到登錄,但隨後送我去,只有當您選擇登錄就像我從來沒有退出爲什麼我的session_destroy()不起作用?

本打開的形式是我使用

<?php 

session_start(); 
session_destroy(); 
header("location:loginusuario.php"); 
?> 

繼承人的代碼,代碼登錄

<?php 
    include ("conexion/conexion.php"); 
    include("usuarios.class.php"); 

$usuario= $_POST['usuario']; 
$clave= $_POST['clave']; 



    $objUsuario = new usuarios; 
    $srt= $objUsuario->autenticar_usuario($usuario,$clave,1); 
    $num =mysql_num_rows($srt); 
    if($num <= 0){ 
     $mensaje="Usuario y/o clave Incorrectos"; 
     header("location:index.php?mensaje=$mensaje"); 
    }else{ 

     $row=mysql_fetch_array($srt); 
     session_start(); 
     $_SESSION['log'] = 's'; 
     $_SESSION['nombre'] = $row['nombre']; 
     header("location:contrataciones.php"); 

    } 


?> 

這是類的代碼

<?php 
    class usuarios 
    { 

    function usuarios() { 

    } 
    function autenticar_usuario($usuario,$clave){ 
     $sel="select usuario,clave from usuarios where usuario='".$usuario."' and clave='".$clave."' "; 
     $srt=mysql_query($sel) or die($sel); 
     return $srt; 

    } 

?> 

我不知道如果我錯過了什麼或什麼,但我認爲代碼是好的,你怎麼看?

+0

你能告訴我們更多你的代碼?這看起來並不是什麼問題。 –

+0

如何測試loginusuario.php頁面中是否存在活動會話? – OlivierH

+0

我認爲你對會話的概念感到困惑。會話總是被創建。你可以在其中存儲信息,如用戶名和內容。如果你想註銷,你可以重新生成一個新的會話ID,也可以重新生成會話變量。 – Luceos

回答

-1

嘗試:

session_unset()session_destroy() 因爲session_destroy()不取消任何與會話,或者取消會話cookie關聯的全局變量。

更多信息: http://www.php.net/function.session-unset

+0

正如您在鏈接的文檔中所寫:'session_unset - 釋放所有會話變量。 OP想要摧毀它。 – OlivierH

+0

毫無意義。 unset()僅適用於session_register() - 創建的值,這是一個DEPRECATED/OBSOLETE方法。 –

+0

@OlivierH freeAll == destroy – theBeacon

0

就一定要徹底摧毀一個會話,並釋放所有相關變量,使用它:

<?php 
    session_start(); //retrieve existing session 
    session_unset(); //free all variables 
    session_destroy(); //destroy esssion 
    session_write_close(); //save session data and close the writing stream (a bit like a SQL commit) 
    setcookie(session_name(),'',0,'/'); //if you use cookie : delete it by setting a new one with a 0 lifetime. 
    session_regenerate_id(true); //regenerate new session id. 
?> 

http://www.php.net/manual/en/function.session-unset.php#107089複製

+0

這行是否像這樣setcookie(session_name(),'',0,'/');或者我必須在''之間寫點東西? – user3117314

+0

你使用cookies嗎?如果沒有,該行是可選的。第二個參數是cookie值:我們在這裏將它設置爲空字符串,因爲這個cookie不會被使用。事情是用一個直接刪除的cookie取代現有的cookie,所以我們不關心它的價值。 http://www.php.net/manual/en/function.setcookie.php – OlivierH

+0

我甚至不知道如何使用cookies,因此我認爲該行不是必需的 – user3117314