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

Posted

技术标签:

【中文标题】我真的需要重新加载我的页面两次吗?【英文标题】:Do I really have to reload my page twice? 【发布时间】:2016-07-31 18:34:02 【问题描述】:

我目前正在开发一个包含 Facebook SDK 的项目。我已经使用 javascript 代码自己登录/注销了。

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

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

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

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

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

感谢您的各种帮助。谢谢。

编辑: 我想在我的网站上为使用 facebook 登录的用户提供额外的机会。我知道如何做到这一点的唯一方法是使用 PHP 中的会话。每当他登录时,我都会创建一个会话,表示有人已登录。

现在我必须对 facebook 登录做同样的事情。它已经在本地与 PHP SDK 一起工作,但网络空间不支持那种 SDK。这就是为什么我必须躲避 javascript 的原因。 是否有其他方法可以确保某人被登录?

【问题讨论】:

你为什么要这么做?做什么的?使用 javascript sdk,您不需要任何页面刷新。既然已经在 javascript 中获取了所有信息,为什么还要重新加载页面以加载会话? 不知道实际的问题是什么。 很可能您的会话数组放错了位置。首先检查isset(),并首先启动会话,并且在所有使用会话的页面中 您应该为此使用 JavaScript SDK; 【参考方案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;
     
?>

而javascript代码是:

$.post( "/login.php",  id:userID, name:response.name  );

【讨论】:

以上是关于我真的需要重新加载我的页面两次吗?的主要内容,如果未能解决你的问题,请参考以下文章

在页面重载时,我的Gatsby.js页脚组件渲染了两次。

在页面卸载 strophe.js 发送请求两次!为啥?

字节码的验证会发生两次吗? [复制]

jQuery提交表单而无需重新加载页面

成功的PHP登录仅在重新加载页面后出现

未经授权使用 jwt 令牌