我真的需要重新加载我的页面两次吗?
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 );
【讨论】:
以上是关于我真的需要重新加载我的页面两次吗?的主要内容,如果未能解决你的问题,请参考以下文章