我真的需要两次重新加载页面吗?

Tar*_*rol 5 javascript php ajax session facebook

我目前正在研究包括Facebook SDK的项目。我已经使用JavaScript代码自行登录/注销了。

我正在使用AJAX POST请求在会话中保存响应中的用户ID和名称。

这里的问题是,我实际上必须重新加载页面两次,这是第一次获得POST参数并将其保存到$ _SESSION中。需要第二次刷新才能加载会话。

有没有一种干净的方法来避免这种情况?

javascript: $.post( "login.php", { id:userID, name:response.name } );

login.php: $_SESSION['name'] = $_POST['name']; $_SESSION['userID'] = $_POST['id'];

我感谢各种帮助。谢谢。

编辑: 我想给使用Facebook登录的用户提供其他在我网站上的机会。我知道如何做到这一点的唯一方法是使用PHP中的Session。每当他登录时,我都会创建一个会话,该会话说一个人已登录。

现在,我必须使用Facebook登录名执行相同的操作。它已经可以在本地使用PHP SDK,但是网站空间不支持这种SDK。这就是为什么我必须躲避JavaScript。还有另一种方法可以确保一个人被登录?

Ash*_*ble 1

您正在使用 AJAX,
因此您可以避免重新加载页面,

<?php    
    session_start();

    if (isset($_GET['name'])) {$_SESSION['name'] = $_GET['name'];}
    if (isset($_GET['userID'])) {$_SESSION['userID'] = $_GET['userID'];}

    if(isset ($_POST['name']  ) && isset ($_POST['userID'])){
        $_SESSION['name']= $_POST['name']; 
        $_SESSION['userID']=  $_POST['userID'];
    }else{
        $_SESSION['userID'] = 0;
    } 
?>
Run Code Online (Sandbox Code Playgroud)

JavaScript 代码是:

$.post( "/login.php", { id:userID, name:response.name } );
Run Code Online (Sandbox Code Playgroud)