我在我的 PHP 网站上使用 MongoDB 来保存我的注册用户和他们的登录信息。到目前为止,一切都很好。
当我登录时,我使用以下(简化):
$login = $collection->findOne(array("mail" => $mailIn, "pass" => $passIn));
if($login) {
$_SESSION["gatekeeper"] = $login['_id'];
}
当我注册时,以下内容:
$collection->insert($obj);
mkdir("$appDirectory/users/" . $obj["_id"]);
$_SESSION["gatekeeper"] = $obj["_id"];
整个系统运行良好,但有一些问题困扰着我:在会话管理器中查看由此派生的 JSON:
"{\"gatekeeper\":{\"$id\":\"505f1cd25c73959504000000\"}}" (redis)
array(1) { ["$id"]=> string(24) "505f1cd25c73959504000000" } (php var dump - gatekeeper)
如您所见,它将其存储为关联数组 $id->id。
当然,简单的 gatekeepeer->id 会好得多。
我怎样才能轻松改变这一点?老实说,我觉得它很混乱,因为这个“$id”让我的 PHP 有点困惑,也让我感到困惑。
基本上烦恼是当我必须检索看门人时:
$gatekeeper = $_SESSION["gatekeeper"];
$userID = $gatekeeper['$id']; //WILL work
$userID = $gatekeeper; //WON'T WORK
只需拥有以下内容会更简单(更好):
$userID = $_SESSION["gateID"];
$userName = $_SESSION["gateName"];
....
代替:
$gatekeeper = $_SESSION["gatekeeper"];
$userID = $gatekeeper['$id'];
$userName = $gatekeeper['name'];
因为 $_SESSION 总是引用同一个会话,所以不需要在数组内有一个数组。
提前致谢。