1

我正在尝试向我的 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 在我的服务器上被禁用。

我几乎没有想法。有谁知道我可以编写一个函数来获取来自不同域的 CI 会话存储 user_id?

4

1 回答 1

1

您可以尝试以下两件事:

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

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

于 2010-07-17T21:12:00.340 回答