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