2

我只是喜欢这篇文章来读取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);
        }
    });
}

并访问此脚本控制台日志显示此错误:未定义的消息。我想访问会话数据并需要帮助。

提前致谢

4

3 回答 3

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);
}
于 2013-01-12T17:25:25.953 回答
1

如此简单的系统无需连接。顺便说一句,这个 cookie 管理器在许多公司都在生产,没有报告任何错误。所以问题不在于那部分。

尝试检查那些:

1) 检查 php.ini 文件以查找会话的 cookie 名称是什么(默认为 PHPSESSID,但可以更改)

2)检查内存缓存是否正在运行,一切正常(没有被防火墙或其他东西锁定)。为此,在 php 或 node.js 方面(选择一个):将 var 放入 memcache 然后检索它并检查 var 内容是否正确...

3)检查 PHP 端的 memcacheSessionHandler 是否正确使用(在您需要运行它之前)

3)如果你仍然有问题,在cookie管理器上你会发现一个列表功能:打印它的内容以检查Node.JS接收到哪个cookie。

于 2013-01-12T19:12:37.227 回答
0

最简单的方法是将connect模块与它的 cookie 解析器一起使用。

于 2013-01-11T19:26:56.077 回答