MongoDB登录系统&;PHP中的会话

MongoDB登录系统&;PHP中的会话,php,session,mongodb,Php,Session,Mongodb,我在PHP网站上使用MongoDB来保存我的注册用户及其登录信息。到目前为止,一切顺利 当我登录时,我使用以下(简化的): 当我注册时,以下内容: $collection->insert($obj); mkdir("$appDirectory/users/" . $obj["_id"]); $_SESSION["gatekeeper"] = $obj["_id"]; 整个系统运行良好,但有一些问题困扰着我:在会话管理器中查看由此派生的JSON: "{\"gatekeeper\":{\"$

我在PHP网站上使用MongoDB来保存我的注册用户及其登录信息。到目前为止,一切顺利

当我登录时,我使用以下(简化的):

当我注册时,以下内容:

$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'];
由于$\u会话始终引用同一会话,因此不需要在数组中包含数组

提前谢谢

_id包含MongoId实例

所以,在将其赋值为会话变量之前,需要将其转换为字符串

如下

$_SESSION["gatekeeper"] = (string) $obj["_id"]

伟大的我知道这将是一件非常简单的事情,只是不知道怎么做。
$_SESSION["gatekeeper"] = (string) $obj["_id"]