php跨域会话问题

时间:2011-06-08 11:04:14

标签: php session subdomain

我正在使用wamp,我使用wamp在localhost上设置了子域名,当我从localhost转到subdomain.localhost时,localhost的会话无效。

然而,我发现了一点,发现我可能需要添加

session_set_cookie_params(0, '/', '.localhost');

session_start();

但似乎它不起作用。

可能是vhosts问题吗?

这就是我设置httpd-vhosts.conf的方式

NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot c:/wamp/www/
    ServerName localhost
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin admin@test
    DocumentRoot "C:/wamp/www/sub/"
    ServerName  sub.localhost
    ServerAlias *.localhost
</VirtualHost>

2 个答案:

答案 0 :(得分:2)

以下是3个选项。

将它放在你的php.ini中:

session.cookie_domain = ".example.com"

在.htaccess中:

php_value session.cookie_domain .example.com

作为脚本中的第一件事:

ini_set('session.cookie_domain', '.example.com' );

来自:Allow php sessions to carry over to subdomains

答案 1 :(得分:0)

迈克尔罗宾逊的答案是正确的,因为这是饼干应该如何工作 - 但IME的实现因浏览器而异。对于便携式解决方案,您应该查看SSO type approach

如果要在目标计算机上重新绑定会话而不是创建新会话(注意这是非常糟糕的做法)....

<?php
if ($_GET['remote_session_id']) {
  session_id($_GET['remote_session_id']);
}
session_start();