在PHP中的同一服务器上跨多个域共享会话

时间:2013-11-19 05:53:36

标签: php session-cookies

我需要为我的一个项目实现一个解决方案,我有多个域+多个子域,他们都需要共享同一个会话。所有域和子域都将指向连接到单个数据库的单个应用程序。

表示如果用户从任何域登录,将能够访问该应用程序的其他域的安全页面。用户可以通过链接或在浏览器中打开新选项卡来更改域名。

我已经阅读了一些文章,并找到了一些下面提到的解决方案: -

  1. 数据库中的会话 - 如果具有相同用户代理的同一网络中的其他用户点击该怎么办?

  2. iFrame消息传递 - 我在某处听到,iFrame会在文档加载时呈现,然后在显示某些页面内容后检查会话会使用户烦恼。

  3. 使用CURLOPT_COOKIEFILE&的CURL请求CURLOPT_COOKIEJAR - 我玩过它并且工作正常,但不知道它是否安全且不是性能杀手。

  4. 单点登录(SSO) - 我需要一些R& D来实现这一点,这将是最后一个选项。

  5. 请建议做什么?

1 个答案:

答案 0 :(得分:0)

只是为了验证我没有错,您需要在所有应用程序之间共享用户会话。

如上所述,您可以使用上述4个选项。但是,我想重点关注将会话放入数据库的第一个选项,并希望建议另一个选项,即在共享目录或服务器中保留会话。

  1. 数据库中的会话 - 您的问题的答案(如果来自同一网络的其他用户点击同一个用户代理怎么办?)您会有不同的会话id唯一标识表中每一行的值。所以,不用担心它。但缺点是,每次需要数据库连接时,如果初始化会话,即每个页面都会触发查询。

  2. 共享目录/服务器中的会话 - 以所有应用程序在共享位置存储会话的方式配置所有应用程序。共享位置可以是目录或安全服务器。使用session_set_save_handler

  3. 可以轻松实现这一目标