在Javascript中解析PHP会话

Sam*_*aye 9 javascript php session node.js

我最近使用node.js扩展了我的网站,并且已经实现我需要一个PHP会话的会话处理程序.现在一切都很酷,花花公子和node.js读取php会话,并可以传播自己与php的会话.我正在使用数据库会话,因此会话数据被保存到数据库中的一个字段中.

然而,我发现了一个小问题.我试图将会话数据读入node.js,这真是一个非常奇怪的字符串.我已经能够将每个会话变量的结构变为:

'field_name'|'type':'length':'value';
Run Code Online (Sandbox Code Playgroud)

现在在某些字符串上,值字段可能在其他字符串上缺失,长度可能会丢失(当变量为空时).类型也可以多于b,s,i; 它也可以是N(NULL).

我原本想起了一个巨大的JS翻译器,但这在某种程度上似乎是一种非常错误的方式.

这里有没有人试图在JS中提取php会话变量,是否有任何类型的脚本可以帮助?也许我可以在PHP端使用格式化的东西让我的生活在node.js中变得更容易?

编辑:架构看起来像:

{ _id: { id: 'L:\u00c1\u009d\u008e\u00ad\u000e}<\u0002\u0000\u0000' }
, session_id: 'a2clfnjhopv1srs5k5elgbfjv5'
, user_id: 0
, session_data:     'logged|b:0;uid|i:0;server_key|N;AUTH_TIER2|b:0;email|s:0:"";cheese|s:6:"cheese";'
, active: 1
, expires: 1278920567
}
Run Code Online (Sandbox Code Playgroud)

这是用户会话的mongo db记录.需要翻译的字段是session_data.粘贴它时会出现某种格式化错误,因为当我尝试并出于某种原因制作它时,stackoverflow不会将其格式化为代码.

我之前尝试过JSONfy这个字段,但它丢失了它的类型,并没有读取Null条目等所以我停止了

谢谢,

Jan*_*nen 5

我相对确定PHP使用serialize和unserialize函数来处理会话数据.

在PHP.JS中有一个unserialize的JavaScript实现,你可以在这里找到它:http://phpjs.org/functions/unserialize


via*_*ney 5

这是基于phpjs的反序列化功能的session_decode功能: https://github.com/vianneyb/phpjs/blob/master/functions/var/session_decode.js

适合我!