然后从Node.js服务器,我想获取该数据并反序列化它.
我试着像这样使用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!';
}
但这不断抛出这个错误:
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)
这是我试图反序列化的数据:
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;
我该如何纠正这个问题?
解决方法:
使用.unserializeSession()而不是.unserialize().
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。