我可以很好地登录用户,并显示用户名。
<?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/