2012-08-09 116 views
1

我有一个PHP,可以访问不存储任何cookie的bot。会话ID可以从_POST变量中恢复。我的理解是在我从会话ID恢复会话之后,$ _SESSION在这种情况下无法访问会话变量,因为Cookie被禁用。PHP:从恢复会话中获取会话变量

确切地说,会话是由用户启动的。此PHP页面将只接收来自bot的一个POST请求 - 将用户的会话ID作为参数传递。我需要“恢复”这个会话并检查用户会话中存储的内容。

机器人丢弃发送给它的任何信息。

是否有任何其他方式来检索会话变量?

+0

是否有任何理由僵尸不能存储cookie?几乎任何脚本语言都应该能够处理cookie。 – 2012-08-09 20:58:46

+0

@GordonBailey它是这样设计的。我无法更改机器人。 – aaronqli 2012-08-09 21:00:33

+0

会话数据是(默认情况下)存储在服务器上的磁盘上,只是在cookie中发送ID。你不能调用session_id($ _ POST ['my_sess_id']),然后调用session_start()?这应该工作... – webjprgm 2012-08-09 21:18:55

回答

2

是的,有一种方法。使用INI设置session.use_trans_sid(将其设置为“1”)会将包含会话ID的查询字符串附加到所有输出的URL,因此不需要cookie。

+0

似乎没有工作。确切地说,会话由用户启动。此PHP页面将只接收来自bot的一个POST请求 - 将用户的会话ID作为参数传递。我需要“恢复”这个会话并检查用户会话中存储的内容。 – aaronqli 2012-08-09 21:07:39

+0

而“bot”很可能会丢弃发送给它的任何信息。 – aaronqli 2012-08-09 21:09:42

+0

在这种情况下...''session_id($ _ POST ['botsession']);' – Lusitanian 2012-08-09 21:13:44

0

许多人建议使用session_id(...) - 由于某种原因,这对我的设置无效。相反,我的解决方案是读会话文件并使用session_decode(...)填充$ _SESSION变量,然后通过$ _SESSION访问变量。