如何在 node.js 中反序列化 PHP 会话? [英] How to unserialize PHP session in node.js?
本文介绍了如何在 node.js 中反序列化 PHP 会话?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我将 PHP $_SESSION
数据存储在数据库中.
I am storing the PHP $_SESSION
data in a database.
然后我想从 Node.js 服务器获取该数据并对其进行反序列化.
Then from a Node.js server I want to take that data and unserialize it.
我尝试像这样使用 js-php-unserialize:
con.query('SELECT user_id, data ' +
'FROM sessions ' +
'WHERE session_id = ? AND session_id IS NOT NULL AND user_id IS NOT NULL'
, [tokenId] , function(queryError, rows){
if(queryError){
throw queryError;
}
console.log(rows[0].data);
return;
var data;
if(rows[0]){
data = PHPUnserialize.unserialize(rows[0].data);
var now = Math.floor(new Date() / 1000);
if(data.MA_IDLE_TIMEOUT < now){
throw 'The session Times out!';
}
if(myIP != data.MA_IP_ADDRESS){
throw 'This session have been hijacked!';
}
但是这一直抛出这个错误:
But this keeps throwing this error:
SyntaxError: Unknown / Unhandled data type(s): m
at error (C:\Program Files\nodejs\node_modules\php-unserialize\php-unseriali
ze.js:54:13)
at _unserialize (C:\Program Files\nodejs\node_modules\php-unserialize\php-un
serialize.js:166:11)
at Object.unserialize (C:\Program Files\nodejs\node_modules\php-unserialize\
php-unserialize.js:173:10)
at C:\Program Files\nodejs\app.js:41:25
at Layer.handle [as handle_request] (C:\Program Files\nodejs\node_modules\ex
press\lib\router\layer.js:95:5)
at next (C:\Program Files\nodejs\node_modules\express\lib\router\route.js:13
1:13)
at Route.dispatch (C:\Program Files\nodejs\node_modules\express\lib\router\r
oute.js:112:3)
at Layer.handle [as handle_request] (C:\Program Files\nodejs\node_modules\ex
press\lib\router\layer.js:95:5)
at C:\Program Files\nodejs\node_modules\express\lib\router\index.js:277:22
at Function.process_params (C:\Program Files\nodejs\node_modules\express\lib
\router\index.js:330:12)
这是我要反序列化的数据:
Here is the data that I am trying to unserialize:
MA_IP_ADDRESS|s:10:"10.0.4.195";MA_USER_AGENT|s:72:"Mozilla/5.0 (Windows NT 6.1;
WOW64; rv:40.0) Gecko/20100101 Firefox/40.0";MA_IDLE_TIMEOUT|i:1442101764;
我该如何解决这个问题?
How can I correct this issue?
推荐答案
使用 .unserializeSession()
而不是 .unserialize()
.
这篇关于如何在 node.js 中反序列化 PHP 会话?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文