在Node.js中使用PHP会话(存储在mySql中)

时间:2015-03-08 17:21:39

标签: php mysql node.js session

我正试着在node.js中使用活动会话(在php中启动)

对于PHP,我将会话存储在mysql中(使用session_set_save_handler中所述的http://192.168.0.222:53077/?phpsession=02isg9kv8fbveqhmt1htcj6cc7 )。适用于PHP。

现在计划:

1)从php app的客户端“执行”node.js链接到GET中客户端的PHPSESSID cookie:

{{1}}

2)在node.js服务器端获取PHPSESSID,在mysql会话表中查找它的值

3)如果mysql中存在PHPSESSID值 - 读取用户的id,name和存储在mysql中的其他用户数据(会话表)

问题 - 这是正确的方法吗?我认为我错了,至少在第2步。在Node.js中工作的正确方法是什么是从php开始存储在mysql中的会话?

请尽量不建议我在memcached或redis中存储会话,我选择了mysql。

1 个答案:

答案 0 :(得分:2)

由于您使用session_set_save_handler自行处理会话,因此您可以选择以任何方式序列化数据。我建议json_encode()与nodejs兼容。

PHP为您的保存处理程序提供已经序列化的数据作为字符串,因此您需要反序列化()它并使用json_encode重新序列化。在返回PHP之前,将会话blob读数调整为json_decode()和serialize()。

您的步骤1,2和3似乎是正确的。更详细的问题可以提供更好的答案。

我建议您将SQL表作为会话存储的几列。

  • " created_on"整数时间戳
  • " updated_on"整数时间戳
  • " long_term"小int,如果用户选中"记住我"或者其他的东西 类似的,这应该跳过正常的会话垃圾收集
  • "的ip_addr"可用于提醒用户潜在的会话劫持。
  • "试剂"可以是用户代理的md5或sha1之和来检测来自的访问权限 不同的设备/浏览器