2010-11-25 18 views
1

私たちは、セッション変数を使用してページにデータを格納しています。ユーザーがあるページから別のページにジャンプするときに、JavaScriptからセッションを終了させるための方法が必要です。出来ますか。はいの場合は、私を案内してください。javascriptからセッションを終了する方法

ありがとうございました

+0

セッションを強制終了するか、セッション変数/キーを削除しますか? – Gidon

+0

変数については、彼が何を意味しているのかを説明したかったと思います。彼はそれを完全に殺すつもりです。 –

答えて

7

あなたはセッション変数を殺すために、サーバーに指示する必要があります。

これを行う唯一の方法は、javascriptからAjaxを使用してカスタムページを呼び出すことです。たとえば、変数として、削除するセッションキーを指定します。

function kill_session() { 
    if (window.XMLHttpRequest) 
     {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
     {// code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

    xmlhttp.open("GET","session_destroyer.php",false); 
    xmlhttp.send(); 

    document.getElementById("id_of_a_hidden_div").innerHTML=xmlhttp.responseText; 
} 

そして、あなたのsession_destroyer.phpのかもしれないが次のようになります:

+1

+1サーバーがセッションを管理していることを思い出させるために。 – Gumbo

+0

それはあなたのいいです! – Gidon

2

セッションクッキーを削除してください。 PHPではPHPSESSIDと呼ばれます。これを行うと、ブラウザはセッションIDを失い、実際のセッションデータにはそのクライアントからアクセスできなくなります。

はJavaScriptからクッキーを処理する方法についてはこちらをご覧ください:http://www.quirksmode.org/js/cookies.html

+0

つまり、セッションはクッキーに保存されますか?これは、クッキーを無効にした場合、セッションで動作するウェブサイトを使用できないことを意味します。 –

+1

@Florianそれは正しくありません。セッションのIDは、Cookieに保存されたほとんどの時間です。実際のセッションデータはサーバーに保存されます。しかし、あなたがIDでクッキーを削除すると、クライアントはセッションを失い、それが私が思ったものです。実際のデータは後でガベージコレクタによって削除されますが、IDなしではアクセスできないため、気にする必要はありません。 –

+0

ああ、私はそれを知らなかった。ありがとう;) –

2

次の例のように、AJAXイベントを発生する必要がSessionオブジェクトは、サーバオブジェクトがある

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

コードが実行されることが保証されていないことに注意してください。ユーザーがそれを削除する可能性があり、ブラウザがコードを実行しないことを決定する可能性があります。 –

+0

どういう意味ですか?例えば、あなたがそれを宣言した場合、onUnload = "kill_session()"の場合、実際にはすべてのブラウザがそれを実行します。 –

+1

クライアントとサーバーのコンセプトについて学ぶべきことがいくつかあります。クライアント側にあるものは、クライアントの管理下にあり、彼によって変更される可能性があります。 –

1

、あなたからそれにアクセスすることはできません直接javascript。 セッションを終了するには、サーバーへのajax呼び出しを作成する必要があります。 jqueryを使って簡単に行うことができます。このリンクをチェックしてください。 http://api.jquery.com/jQuery.ajax/

+0

お返事ありがとうございます – Thomas

関連する問題