2012-10-31 77 views
0

我使用註銷功能無效的工具。我有一個索引頁面,我在其中使用session_start()包含配置文件。無法註銷

之後,我加入了一個頁面,其中包含我的橫幅以及我的登錄和註銷按鈕。當我點擊其中一個按鈕時,我會進入另一頁connec.php,我銷燬或創建連接。

連接沒關係,我初始化了所有的會話變量。 對於斷開我做的:

if(isset($_POST['logout'])){ 
    $_SESSION = array(); 
    session_unset(); 
    session_destroy(); 
    $_POST['logout']=1; 
    //gotopage($GLOBALS["GLOBAL_URL_PSISITE"]); 
    header("Location: ../index.php"); 

我仍然連接,當我做print_r($_SESSION)始終存在。

+1

在您的deconnexion腳本中,請確保您使用session_start();在頂部。 –

+0

是的,我在頂部使用session_start()。 – user1789039

回答

2

首先可以肯定的是,頁面已經session_start()在規定的極頂,你在頁面上做任何事情之前,其次確認您輸入的字段纏form元素和你submit buttonname=logout和你的方式被設定爲method=post

<form method="post" action="your_logout_script_page.php"> 
    <input type="submit" name="logout" /> 
</form> 
+0

是的,這些thnigs是好的。謝謝 – user1789039

+0

沒有其他的東西,否則你錯過了一些真正簡單的東西 –

+0

我認爲是這樣的...... – user1789039

0

你會想這樣的事情在你的文件

<?php 
session_start(); 

if (isset($_POST['logout'])) { 

    $_SESSION = array(); 

    if (ini_get("session.use_cookies")) { 
     setcookie(session_name(), '', time() - 42000, '/'); 
    } 

    session_destroy(); 

    //$_POST['logout']=1; // this won't do anything since you're redirecting on the next line. 

    header("Location: ../index.php"); 
    exit; 

} 
?> 
+0

我沒有在我的代碼中使用任何cookie。謝謝 – user1789039

+0

@ user1789039 PHP會話ID(通常)存儲在cookie中。 [你可以在這個截圖中看到](http://snag.gy/dGizN.jpg)。它與你在代碼中使用setcookie無關。上面的代碼確保它被刪除。 –

+0

我嘗試你的解決方案,但它不起作用 – user1789039

0

爲了正確地「消滅」一個正在運行的會話,必須首先告訴PHP你試圖殺死哪個會話。

在會話的情況下,不具有自定義/手動名(大多數情況下),您必須首先調用

session_start(); 

你可以叫

session_destroy(); 

前...所以:

<?php session_start(); session_destroy(); ?> 
+0

我已經有了我的session_start()。謝謝 – user1789039