首页 > 解决方案 > 解析 PHP 当前用户更新失败但会话已更新

问题描述

在 Parse PHP SDK 如果当前用户想正常更改他的电子邮件/用户名 Parse 检查其他用户是否使用了用户名,如果使用它将返回错误,现在这很好并且到目前为止工作正常但问题是会话是自动更新到失败的新值。

所以基本上当前用户的会话更新,即使它不是后端

重现步骤

$currentUser = Parse\ParseUser::getCurrentUser();
echo "Current Username is : ". $currentUser->get("username");

if ($currentUser) {
  $currentUser->set("username", "ww");
try {
        $currentUser->save();
        echo "UPDATED";
    } catch (Parse\ParseException $er) {
        $ex = $er->getMessage();
        echo "<br> Error: ". $ex;
    }
}

这是一个解释更多的视频:

https://youtu.be/KWS9fW5MReA

标签: phpsessionparse-platformphp-parse-error

解决方案


由于您已在 PHP 应用程序中更新了对象,因此除非您重置操作,否则它将在本地保持更新。所以你可以:

  • 保存旧用户名并在您的 catch 方法中反转操作;或者
  • $currentUser->fetch()在你的 catch 方法中使用;或者
  • 实例化一个新的用户对象,在这个新对象中进行更改尝试,最后$currentUser->fetch()仅在成功的情况下进行。

请参阅以下可能的解决方案之一:

$currentUser = Parse\ParseUser::getCurrentUser();
echo "Current Username is : ". $currentUser->get("username");

if ($currentUser) {
  $currentUser->set("username", "ww");
try {
        $currentUser->save();
        echo "UPDATED";
    } catch (Parse\ParseException $er) {
        $currentUser->fetch();
        $ex = $er->getMessage();
        echo "<br> Error: ". $ex;
    }
}

推荐阅读