为什么http://www.domain.com中的PHP会话值在domain.com中不起作用?

时间:2012-03-02 09:48:42

标签: php session

  

可能重复:
  PHP: Cookie domain / subdomain control

我有两页a.php和b.php。我正在运行我的a.php页面,其网址为 http://www.domain.com/a.php 。这里,页面包含一些会话值。

例如:$ _SESSION ['name'] ='我的名字';

在b.php中我打印会话值以上。如果我使用网址 http://www.domain.com/b.php 访问我的b.php页面,会话值工作正常。

Ex:echo $ _SESSION ['name']; //输出'我的名字';

如果我使用网址 http://domain.com/b.php 访问同一页面,则会话值无效。

EX:echo $ _SESSION ['name']; //没有结果

问题是什么?如何解决这个问题。

3 个答案:

答案 0 :(得分:2)

您可以使用session_set_cookie_params()功能

在所有子域上启用会话
session_set_cookie_params ( 0, '/'  '.domain.com');

答案 1 :(得分:0)

对此有a lot of similar questions,你在发帖前搜索过了吗?)?

总结:

  • 会话使用Cookie
  • www不是特殊字符串,只是example.com的www子域名
  • Cookie只能由域和直接子域访问,以便设置它
    • 在example.com上设置的cookie(或者更确切地说,“。”example.com)适用于任何子域
    • 无法从example.com
    • 访问www.example.com上设置的Cookie

所有这一切 - 如果你只是redirect from www.example.com -> example.com,你甚至可以忽略它,或者反之亦然。

答案 2 :(得分:0)

最好将www.example.com的重定向设置为example.com,反之亦然,以避免重复内容。但是,您可以修改php.ini以选择所需的域。如果您的主机允许您编辑php.ini,请将其添加到其中:

session.cookie_domain = example.com

如果没有,请在您网站的根目录(通常是.htaccesspublic_html)创建一个名为htdocs的文件并添加:

php_value session.cookie_domain example.com

显然,您需要将example.com替换为您网站的域名,而无需使用www或任何其他子域名