我只是喜欢this article来读取nodejs中的会话并从memcached中读取会话数据。但是我有一些问题从phpsessid读取数据。当我将此index.js脚本节点化时
var app = require("http").createServer(handler),
fs = require("fs"),
memcache = require("memcache"),
co = require("./cookie.js");
app.listen(7070);
//On client incomming, we send back index.html
function handler(req, res){
fs.readFile(__dirname + "/index.html", function(err, data){
if(err){
res.writeHead(500);
return res.end("Error loading index.html");
}else{
res.writeHead(200);
res.end(data);
}
});
//Using php session to retrieve important data from user
var cookieManager = new co.cookie(req.headers.cookie);
var client = new memcache.Client(11211, "localhost");
client.connect();
client.get("sessions/"+cookieManager.get("PHPSESSID"), function(error, result){
console.log("error : "+error);
if(typeof(error)==="undefined"){
var session = JSON.parse(result);
}
});
}
并访问此脚本控制台日志显示此错误:undefined message.i想要访问会话数据并需要帮助。
提前致谢
答案 0 :(得分:1)
这与您之前提出的问题基本相同,请尝试以下方法:
client.get("sessions/"+cookieManager.get("PHPSESSID"), function(error, result) {
if (error) {
console.log(error);
} else {
session_management(JSON.parse(result));
}
});
function session_management(session) {
console.log(session);
}
答案 1 :(得分:1)
无需为这么简单的系统安装连接。顺便说一下,这个cookie管理器已在许多公司投入生产,没有任何错误报告。所以这个问题不是来自那个部分。
尝试检查thoose:
1)检查php.ini文件以查找会话的cookie名称(默认情况下它是PHPSESSID,但可以更改)
2)检查memcache是否正在运行,一切正常(没有被防火墙或其他东西锁定)。为此,在php或node.js端(选择一个):将var放入memcache然后检索它并检查var内容是否是好的...
3)检查PHP端的memcacheSessionHandler是否正确使用(在运行之前需要的所有内容)
3)如果你还有问题,在cookie管理器上你会找到一个列表功能:打印它的内容以检查哪个cookie Node.JS接收。
答案 2 :(得分:0)
最简单的方法是使用connect
模块及其cookie解析器。