2

nodejsでセッションを読み取り、memcached からセッション データを読み取るこの記事が気に入りましたが、この index.js スクリプトをノード化するときに、phpsessid からデータを読み取るのに問題がありました。

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 want to access session data and need help in this.

前もって感謝します

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) memcache が実行されていることを確認し、すべて正常であること (ファイアウォールなどによってロックされていないこと) を確認します。そのために、php または node.js 側 (いずれかを選択) : var を memcache に入れ、それを取得して、var コンテンツが適切なものであることを確認します...

3) PHP 側の memcacheSessionHandler が正しく使用されていることを確認します (すべてを実行する前に)。

3) それでも問題が解決しない場合は、Cookie マネージャーにリスト機能があります。その内容を出力して、どの Cookie Node.JS が受信したかを確認します。

于 2013-01-12T19:12:37.227 に答える
0

最も簡単な方法はconnect、Cookieパーサーでモジュールを使用することです。

于 2013-01-11T19:26:56.077 に答える