我正在尝试在 node.js 中使用事件 session (在 php 中启动)
对于 PHP,我将 session 存储在 mysql 中(通过使用 session_set_save_handler
,如 http://phpsecurity.org/code/ch08-2 中所述)。适用于 PHP。
现在计划:
1) 从 php 应用程序的客户端“执行”node.js 链接到 GET 中客户端的 PHPSESSID cookie:
http://192.168.0.222:53077/?phpsession=02isg9kv8fbveqhmt1htcj6cc7
2) 在 node.js 服务器端获取 PHPSESSID,在 mysql session 表中查找它的值
3) 如果mysql中存在PHPSESSID值——读取mysql( session 表)中存储的用户id、名称和其他用户的数据
问题是 - 这是正确的方法吗?我认为我错了,至少从第 2 步开始是这样。在 Node.js 中使用存储在 mysql 中的 session 从 php 开始工作的正确方法是什么?
请尽量不要建议我将 session 存储在 memcached 或 redis 中,我选择了 mysql。
最佳答案
由于您是使用 session_set_save_handler 自己处理 session ,因此您可以选择以任何您想要的方式序列化数据。我建议使用 json_encode() 来与 nodejs 兼容。
PHP 将已序列化的数据作为字符串提供给您的保存处理程序,因此您需要对其进行 unserialize() 并使用 json_encode 重新序列化。在返回 PHP 之前,将您的 session blob 读取调整为 json_decode() 和 serialize()。
您的步骤 1、2 和 3 似乎是正确的。更详细的问题可以提供更好的答案。
我建议确保您的 SQL 表为 session 存储的几列。
- “created_on”整数时间戳
- “updated_on”整数时间戳
- "long_term"small int,如果用户勾选了“记住我”之类的 类似的,这应该跳过正常的 session 垃圾收集
- “ip_addr”可用于提醒用户潜在的 session 劫持。
- "agent"可以是用户代理的 md5 或 sha1 总和,用于检测来自 不同的设备/浏览器
关于php - 在 Node.js 中使用 PHP session (存储在 mySql 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28929509/