我有一个用户数据库和login表单的网站。 这个系统完美地工作了100%。 我有一个名为www.example.com
的主站点和一个名为accounts.example.com
的子站点。 当用户login时,他或她login主站点www.example.com/login.php
。
要查看他们的个人资料并进行编辑,他们点击一个链接,将他们带到accounts.example.com/profile.php?user=theirusername
。 当页面加载时,假设一个编辑button显示他们是否正在查看自己的帐户。 我会这样做, <?php if($user == $dbusername){ echo"<a href='edit.php'>EDIT</a>";}
如果我访问www.example.com/Accounts/profile.php?user=theirusername
,此function可以正常工作,但在子域上不起作用。 accounts.example.com
指向www.example.com/Account/
path。
我不知道为什么会发生这种情况,我正在使用标准的PHP SESSIONS。 当我查看Safari Inspector中的Cookies选项卡时,会显示1个SESSION, accounts.example.com
。
有没有办法将一个cookie“携带”到另一个子域? 任何帮助将是伟大的! 谢谢!
如果您需要在子域名www.example.com
和accounts.example.com
使用cookie,则需要将其设置在根域example.com
。 您需要将PHP设置session.cookie_domain更改为".example.com"
。
session.cookie_domain = ".example.com"
php_value session.cookie_domain .example.com
ini_set('session.cookie_domain', '.example.com' );
这是首选的顺序:如果你有权访问服务器configuration,你应该在涉及的VirtualHost
的php.ini
中执行此操作。 第三个选项是最糟糕的,因为您必须在每个PHP脚本上单独更改它。