可能重复:
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_html
或htdocs
),并添加:
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重定向,你甚至可以忽略它,当然反之亦然。