如何在同一台服务器上跨多个域维护 PHP 会话?
Posted
技术标签:
【中文标题】如何在同一台服务器上跨多个域维护 PHP 会话?【英文标题】:How do I maintain PHP sessions across multiple domains on the same server? 【发布时间】:2010-09-19 15:07:29 【问题描述】:我正在寻找一种在同一服务器上跨多个域维护 php 会话的方法。我将把我的网站与一个简单机器论坛集成,所以我需要使用基于 mysql 的会话。谢谢!
【问题讨论】:
【参考方案1】:根据您修改 PHP 变量的首选方法(Apache 的配置,.htaccess),将 session.cookie_domain 值更改为一致的值。
我有多个子域,Apache 配置文件中的每个 VirtualHost 部分都包含以下行:
php_value session.cookie_domain mydomain.com
如果您在 .htaccess 文件中进行更改,语法应该类似。
更新了 bobert5064 的评论:
对于多个域(即domain1.com、domain2.org),我认为只需要选择一个通用域名(即domain1.com)即可。我从来没有尝试过,所以我无法验证它是否有效,但逻辑似乎是准确的。
在http://us.php.net/manual/en/function.session-set-cookie-params.php 中描述的PHP 中还有一种设置变量方向的方法。该文档没有提及在不同域上设置 cookie 的能力或不能力。
【讨论】:
问题是我使用了多个不同的 URL,而不是子域。即 domain1.com domain2.com【参考方案2】:如果一个站点要转发或链接到第二个站点,它可以在链接的 href 中包含会话 ID,或者在表单中作为 输入。类似于 George 的 img 标记 方法,但会话仅在需要时才会移动。
哪个最好取决于您网站的使用模式。
【讨论】:
以上是关于如何在同一台服务器上跨多个域维护 PHP 会话?的主要内容,如果未能解决你的问题,请参考以下文章
多个服务器如何通过维护相同的用户会话来处理 Web 应用程序请求。?
当 Rails 中的同一域上存在会话时,如何在 PHP 中创建会话?