0

我想在不重新加载页面的情况下注销用户,只需更新一些 div。这就是我所拥有的,但显然不起作用。只有在重新加载页面后会话才会取消。

$.ajax({
        url: "logout.php",
        method: "post",
        data: "account_type=twitter",
        success: function () {

        /*****do something***********/  
    }
});

在注销.php

<?php
    session_start();

    if(isset($_POST['account_type']) && $_POST['account_type'] == "twitter") {

        unset($_SESSION['twitterId']);
        unset($_SESSION['twitterName']);
        unset($_SESSION['twitterPic']);
        unset($_SESSION['twitterUrl']);
        unset($_SESSION['access_token']);
        unset($_SESSION['token_oauth']);

        header("Location: index.php");
    }
?>

一些帮助将不胜感激。谢谢!

4

3 回答 3

1

从技术上讲,您正在做的事情没有任何问题。

问题在于期望注销会更改已显示的内容。

当您通过 ajax 调用注销用户时,旧的登录内容仍将显示在页面上,直到您实际重新加载整个页面或重新加载显示登录内容的 div 的内容。

例如,如果您有一个显示 的框,则You are logged in仅通过 ajax 注销不会更改该内容,直到您使用 ajax 重新加载该 div 或重新加载整个页面,以便服务器然后告诉该页面您未登录。

已经发送给用户的内容将始终保持原样,除非您在注销后使用 ajax 或通过重新加载页面上的所有内容来特别更改它。

于 2013-05-16T11:14:53.660 回答
0
<?php
    session_start();

    if(isset($_POST['account_type']) && $_POST['account_type'] == "twitter") {

        session_destroy();

        header("Location: index.php");
    }
?>
于 2013-05-16T10:12:24.883 回答
0

ajax 调用取消了会话,但您需要在成功注销 ajax 调用后相应地操作 div,例如隐藏用户名、放置登录按钮或删除任何用户区域......

于 2013-05-16T10:20:53.920 回答