PHP ParseUser::getCurrentUser();在登录页面之外不起作用

标签 php authentication parse-platform

我可以很好地登录用户,并显示用户名。

<?php 
require 'connectParse.php'; 

use Parse\ParseClient;
use Parse\ParseUser;
use Parse\ParseSessionStorage;

session_start();


// set session storage
ParseClient::setStorage( new ParseSessionStorage() );

try {
  $user = ParseUser::logIn("user", "pass");
  // Do stuff after successful login.
} catch (ParseException $error) {
  // The login failed. Check error to see why.
}

$currentUser = ParseUser::getCurrentUser();
$currentUser = $currentUser->get("username");
echo $currentUser;
?>

<a href="/second.php">second page</a>

但是当我将用户导航到同一服务器上的另一个页面并检查当前用户时,我什么也得不到。

<?php

require 'connectParse.php'; 

use Parse\ParseClient;
use Parse\ParseUser;
use Parse\ParseSessionStorage;

session_start();

$currentUser = ParseUser::getCurrentUser(); 
print_r( "<p>" . $currentUser . " </p><p>is the user</p>" );

?>

这些是登录页面和其他页面上仅有的代码片段。我试过使用和不使用 session_start();在第二页上也是如此。当然,用户确实存在于另一个页面上。花了很多时间,却一无所获。我可以绕过它设置我自己的 SESSION 变量,但我想使用 Parse 的功能。我认为这是我所缺少的非常简单的东西......会爱爱爱那里的任何帮助!谢谢你,干杯!

最佳答案

您需要在包含自动加载器之后启动 session 。这是为了避免类不完整的问题。当 PHP 尝试反序列化 session 中的对象时,Parse\ParseUser 尚未加载。

require '../vendor/autoload.php'; 之后和 ParseClient::initialize('app_id', ' key ', '万能 key ');.

您不需要使用 ParseClient::setStorage( new ParseSessionStorage() ); 就像 session 处于事件状态一样 ParseClient::initialize 将默认使用它。

然后你可以得到当前用户。就这样。

关于PHP ParseUser::getCurrentUser();在登录页面之外不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26366124/

相关文章:

php - curl 窗口 : the provided file handle is not writable

c# - 在 ASP.NET Core 中使用具有自定义 Cookie 身份验证的授权属性

java - 由于 javax.mail.AuthenticationFailedException,无法使用 JavaMail 发送邮件

facebook - Google App Engine Facebook 应用程序身份验证

javascript - 解析服务器 Javascript API 发布到指针

ios - 当我更改 View Controller 时 NSTimer 自动增加

php - 使用 PHPmailer 发送附件 - 返回 .dat 文件

php - MySQL和PHP中的空数据库?

php - 分发文件使收件人无法阅读

ios - 应用程序中的推送通知