为什么我的PHP会话值在http://www.domain.com不在domain.com中工作


Why my PHP Session values in http://www.domain.com are not working in domain.com?

可能重复:
PHP:Cookie域/子域控制

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

例如:$_SESSION['name']='my-name';

在b.php中,我正在打印上述会话值。如果我使用url访问我的b.php页面http://www.domain.com/b.php,会话值运行良好。

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

如果我使用url访问同一页面http://domain.com/b.php,会话值不起作用。

示例:echo$_SESSION['name']//无结果

问题出在哪里?我该怎么解决。

您可以使用session_set_cookie_params()函数在所有子域上启用会话

session_set_cookie_params ( 0, '/'  '.domain.com');

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

session.cookie_domain = example.com

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

php_value session.cookie_domain example.com

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

有很多类似的问题,你在发布之前搜索过吗;)?

总结:

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

话虽如此,如果你只是从www.example.com->example.com重定向,你甚至可以忽略它,当然反之亦然。