微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 如何在node.js中反序列化PHP会话?

我将PHP $_SESSION数据存储在数据库中.

然后从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 举报,一经查实,本站将立刻删除。

相关推荐