2011-09-10 1 views
0

こんにちは私はログインセッションをクリアしようとしていますが、これを行う正しい方法は何ですか?あなたは、単に引用、manual page for session_destroyを開き、すべての必要な情報を見つけることができるPHPセッション_破棄または解除またはクリア

function logout(){ 

        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"]); 
        } 
         session_destroy(); 
         header ("Location: index.php"); 
    } 
+0

とのセッションの破棄http://php.net/manual/en/function.session -destroy.php#example-4036)。それは間違っていると思いますか? – Jon

+0

私は誰かがセッションを破壊すべきではないと言われましたが、これを実行する最善の方法が何であるか知りたいのですか? – smith

+0

誰かが特定の議論を提供していないか、アプリケーションが(非常にありそうもない)非常に特殊で固有の要件に関する知識を持っていない限り、彼らのアドバイスは一般的でした。だから、PHP.netからの一般的なアドバイスと "誰か"からの一般的なアドバイスです。 – Jon

答えて

0

session_destroy()は、現在のセッションに関連付けられたすべてのデータを破壊します。セッションに関連するグローバル変数の設定を解除したり、セッションCookieの設定を解除したりすることはありません。

セッションを完全に終了するには、ユーザーをログアウトするように、セッションIDも設定解除する必要があります。 Cookieを使用してセッションIDを伝播する場合(デフォルトの動作)、セッションCookieを削除する必要があります。それにはsetcookie()を使用することができます。

例2209([PHP.netから]あなたは、サンプルコードを既に貼り付けている$ _SESSION

// Initialize the session. 
// If you are using session_name("something"), don't forget it now! 
session_start(); 

// Unset all of the session variables. 
$_SESSION = array(); 

// If it's desired to kill the session, also delete the session cookie. 
// Note: This will destroy the session, and not just the session data! 
if (isset($_COOKIE[session_name()])) { 
    setcookie(session_name(), '', time()-42000, '/'); 
} 

// Finally, destroy the session. 
session_destroy(); 
関連する問題