如何使用Jquery / Javascript清除PHP会话?

时间:2014-07-24 00:48:41

标签: php jquery session

想知道是否可以使用jquery或javascript进程清除PHP会话?因为我想要做的是使用对话框清除PHP会话。如果用户点击“确定”。按钮它将处理未设置的功能。在我的页面中有一个结帐流程,在用户点击按钮后,就可以了解问题'它会提示一个对话框,如果用户点击“确定”。按钮它将取消设置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'; 
                }
            }
        });

});

3 个答案:

答案 0 :(得分:10)

简单地说:你不能,直接

PHP是服务器端语言,而javascript是客户端语言,这意味着除了您收到的文档和交互之外,它们之间没有其他连接和你。会话由服务器存储和管理。

但是,正如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();
}

答案 1 :(得分:4)

有一种方法可以直接从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=/";
}

现在,您所要做的就是使用密钥&#34; PHPSESSID&#34;删除Cookie。像这样

removeCookie("PHPSESSID");

现在当你var_dump($_SESSION)发现它是空数组时

答案 2 :(得分:3)

您无法直接使用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