我尝试在此处实施解决方案:How to share session between NodeJs and PHP using Redis?
如果我在Node中创建一个会话然后加载我的PHP页面,它会很有用。会议结合在一起。我需要知道如何在PHP中创建会话,然后在我访问节点站点时将它组合在一起。我的两个网站都在100%的同一个域上。
在这个片段中,我添加了$ echo $ sess_id行,它出现在"" (我觉得这是问题的关键)。如果我做session_id(' temp'); redis键成为session:php:temp但显然它需要是nodeJS理解的东西。我也肯定在node / php上使用相同的密钥。
} else {
// let PHP generate us a new id
session_regenerate_id();
$sess_id = session_id();
echo $sess_id;
$hmac = str_replace("=", "", base64_encode(hash_hmac('sha256', $sess_id, EXPRESS_SECRET, true)));
// format it according to the express-session signed cookie format
session_id("s:$sess_id.$hmac");
}
因为当我使用redis-cli密钥时*我得到一个名为session的密钥:php:没有会话ID。如果我做redis-cli GET会话:php:我得到了
"{\"php\":\"Hello from PHP\",\"cookie\":[]}"
我知道PHP正在与redis交谈,它只是没有保存具有会话ID的真实会话。
我已经好几天了,任何帮助都会非常感激,我很乐意回答任何问题。
它也值得一无所获我没有错误和以下几行
echo json_encode($_COOKIE, JSON_PRETTY_PRINT);
echo json_encode($_SESSION, JSON_PRETTY_PRINT);
输出
[
]{
"php": "Hello from PHP",
"cookie": [
]
}
如果我在节点中启动会话,那些行将从节点输出完整的cookie /会话信息,并添加php的php hello(完美组合)。