如何从外部站点访问codeigniter会话变量

时间:2010-07-17 20:36:18

标签: session codeigniter messageboard

我试图在我的Codeigniter网站上添加留言板。除了一小部分之外,一切都进展顺利:我希望从主站点登录以转移到留言板。由于留言板无法在Codeigniter中运行,因此我创建了一个子域来运行留言板。这意味着主站点和留言板不共享cookie。留言板是Phorum驱动的,所以如果我有用户的user_id,我可以使用挂钩登录。换句话说,我的问题基本归结为能够在一个域上运行一个函数,该函数可以将user_id变量存储在另一个域的会话中。

以下是我尝试过的事情:

  1. 在codeigniter中设置一个控制器,该控制器使用ci-> session来回显user_id。然后在留言板中,我使用CURL来获取codeigniter控制器的输出。这似乎不起作用,因为CURL不携带cookie或会话或其他东西,因此当通过CURL调用时,codeigniter无法访问它的会话。

  2. 同样的事情,但有file_get_contents。我的服务器上禁用了File_get_contents。

  3. 我几乎没有想法。有没有人知道我能写的一个函数会让我从不同的域中存储一个CI会话存储的user_id?

1 个答案:

答案 0 :(得分:1)

您可以尝试以下两件事:

1)将论坛托管在代码点火器项目的子目录中。因此,您的两个网站将包含网址http://mysite.com/http://mysite.com/forum。现在他们共享同一个域,您可以访问该会话。

2)在论坛登录页面中,显示“自动登录”消息。在同一页面上,使用src =“http://mysite.com/autologin/tokenid”在html中添加iframe,但用css隐藏它。自动登录页面将具有CI会话信息,您可以通过难以猜测的标记并通过回显$ _SESSION ['user_id']暂时向世界提供这些信息。完成后,请记得使此页面过期。然后刷新论坛的登录页面并使用CURL获取http://mysite.com/autologin/tokenid处的公开会话信息。这充满了安全漏洞,所以只能作为最后的手段。