web-dev-qa-db-ja.com

JQuery / Javascriptを使用してPHPセッションをクリアする方法は?

PHPセッションをクリアできるかどうかを尋ねたいだけですか?PHPセッションをクリアすることですダイアログボックスを使用します。ユーザーが[OK]ボタンをクリックすると、設定解除機能が処理されます。私のページにはチェックアウトプロセスがあり、ユーザーが[OK]ボタンをクリックすると、ダイアログボックスが表示され、ユーザーが「OK」ボタンをクリックすると、PHPセッションの設定が解除され、別のページにリダイレクトされます。

これが私の簡単なコードです:

<i class="fa fa-check"></i> <span id="save_registry" class="cursor: pointer">OK</span>

<div id="save_alert" style="display: none">
    <?php unset($this->session->data['cart']);
</div>


....

$('#save_registry').click(function(){

        $('#save_alert').dialog({
            modal: true,
            buttons: {
                Ok: function() {
                    $( this ).dialog( "close" );
                    location = 'index.php?route=common/home'; 
                }
            }
        });

});
7
Jerielle

簡単に言えば:直接できません。

PHPはserver-side言語であり、javascriptはclient-sideの1つです。つまり、受信してやり取りするドキュメント以外に、それらの間に他の接続はありません。セッションはserverによって保存および管理されます。

ただし、War10ckが示すように、セッションをクリアするサーバー側スクリプトを呼び出すことができます。このようなもの:

PHP:

<?php
    /* 
     * session_start();
     * Starting a new session before clearing it
     * assures you all $_SESSION vars are cleared 
     * correctly, but it's not strictly necessary.
     */
    session_destroy();
    session_unset();
    header('Location: continue.php'); 
    /* Or whatever document you want to show afterwards */
?>

HTML/JavaScript:

<script type="text/javascript">
    function logout() {
        document.location = 'logout.php';
    }
    LogoutButton.addEventListener('click', logout, false);
</script>

<button id="LogoutButton">Log out</button>

または非同期呼び出しを実行する:

function logout() {
    var xhr = new XMLHttpRequest();
    xhr.onload = function() {
        document.location = 'continue.php';
    }
    xhr.open('GET', 'logout.php', true);
    xhr.send();
}
10
arielnmz

JavaScriptから直接実行できる方法があります...最初に、キーでCookieをクリアする関数を宣言する必要があります

_function removeCookie(cookieName)
{
    cookieValue = "";
    cookieLifetime = -1;
    var date = new Date();
    date.setTime(date.getTime()+(cookieLifetime*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
    document.cookie = cookieName+"="+JSON.stringify(cookieValue)+expires+"; path=/";
}
_

今あなたがしなければならないのは、このようにキー "PHPSESSID"を持つクッキーを削除することだけです

_removeCookie("PHPSESSID");
_

var_dump($_SESSION)を実行すると、空の配列が見つかります

4
Khalid

JavaScriptを直接使用してphpセッションをクリアすることはできません。

PHPはサーバー側の言語ですが、JavaScriptはクライアント側です。

ただし、破壊を処理する指定されたページにajaxリクエストをスローできます。

このような:

// Client-side
$.post("logout.php", {"can_logout" : true}, function(data){

   if(data.can_logout)
      // redirect the user somewhere
}, "json");


<?php
   // Server-side
   $can_logout = $_POST["can_logout"];

   if($can_logout)
     session_destroy();

   echo json_encode(array("can_logout" => true));
?>

または、セッションの破棄を処理するページをユーザーに示すだけです。つまり、logout.php

3
Kyle Emmanuel