nodejs无法读取phpsessid并返回错误undefined

时间:2013-01-11 17:54:31

标签: php node.js session memcached

我只是喜欢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想要访问会话数据并需要帮助。

提前致谢

3 个答案:

答案 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解析器。