跨多个域共享php会话($_SESSION)

我有2个不同的域,我们称它们为www.foo.com和bar.foo.com.第一个是使用CI构建的,第二个是使用Symfony构建的.我想共享我的会话,因此,如果我登录其中一个,则可以访问另一个会话.我使用$_SESSION [“ session_name”] =“ value”;设置会话数据.

如何使会话数据可从其他域读取?

谢谢你的帮助.

解决方法:

在我理解的原始问题的评论中考虑您的原始问题以及您对Logan和我本人的回答:

1-您要在域及其子域之间传递会话变量;和

2-CI和Symfony在有机会执行ini_set命令之前加载会话.

我相信您有两种选择:

1-在php.ini文件中包含php配置命令

session.cookie_domain=".foo.com"

如果您尝试将其包含在.htaccess中,那么如果您将php作为CGI模块运行,它将无法正常工作,这似乎在共享托管服务中相当普遍.

2-您可以将文件添加到站点中的所有php脚本.这些将放在您的站点运行的每个PHP脚本的顶部,甚至包括CI和Symfony中的脚本.例如:

phpprepend.php文件

<?php
ini_set('session.cookie_domain', '.foo.com');
?>

在php.ini文件中包含以下行:

auto_prepend_file = "/path/to/file/phpprepend.php"

请让我们知道是否可以解决问题.

祝好运!

上一篇:php-Codeigniter-我应该在视图中访问会话数据吗?


下一篇:php-CodeIgniter CRUD视图抽象