2018年3月24日 星期六

Node.js 讀取儲存在 Redis 的 PHP Sesion 資料

[Node.js 安裝 php-unserialize 模組]
php-unserialize 可以反序列化 PHP serialize() 後的資料=>使用 unserialize(string)
也可以解析 PHP 儲存的 seesion 資料(例如儲存在 Redis 的Sessoin) =>使用 unserializeSession(string)
$ npm install php-unserialize --save

[Node.js 讀取儲存在 Redis 的 PHP Session 範例]
"use strict";

//redis 連線設定
const REDIS_HOST = "127.0.0.1";
const REDIS_PORT = 6379;
const REDIS_OPTS = {};
const REDIS_PASS = "密碼";

let redis = require('redis');
let redis_client = redis.createClient(REDIS_PORT, REDIS_HOST, REDIS_OPTS);
redis_client.on("error", function (err) {
    console.log("Error:" + err);
});
redis_client.auth(REDIS_PASS);//密碼驗證


var PHPUnserialize = require('php-unserialize');
let php_sess_key = "PHP Session儲存在Redis的Key";//例如PHPREDIS_SESSION:n47g4vh1qt2pltplkd3lhifes2
//讀取資料後,利用 callback function 處理取得資料
redis_client.get(php_sess_key, function (err, results) {
    if (null !== err) {
        try {
            //使用 unserializeSession 解析 session 資料
            let sess = PHPUnserialize.unserializeSession(results);
            console.log(sess);
            console.log(sess.user.u_id);
        } catch (err) {
            //錯誤處理.....
        }
    }
});


參考:
GitHub - naholyr/js-php-unserialize: JavaScript tool to unserialize data taken from PHP. It can parse "serialize()" output, or even serialized sessions data.

沒有留言:

張貼留言