Основными виновниками здесь являются браузеры, а не PHP. Они хранятся по доменам и не знают, что www
- особый случай; с их точки зрения, www.mydomain.com
и mydomain.com
являются разными строками и поэтому имеют разные политики безопасности. Однако есть кое-что, что вы можете сделать.
При настройке файла cookie используйте .mydomain.com
(с начальной точкой). Это скажет браузеру вашего пользователя сделать куки доступными для mydomain.com
и всех поддоменов, включая www
. PHP setcookie имеет аргумент $domain
, но он пятый в списке, поэтому вам может потребоваться установить $expire
и $path
в их значения по умолчанию, чтобы получить его.
setcookie('name', 'value', time()+3600, '/', '.mydomain.com');
Однако для обеспечения согласованности вы можете рассмотреть возможность перенаправления всего веб-трафика на конкретный домен, т. Е. Отправить mydomain.com
трафик на www.mydomain.com
или наоборот. Мои смутные знания о SEO (редактировать, если они неправильные) говорят мне, что это полезно, чтобы не иметь дублирующегося контента, и избавляет вас от всех подобных проблем с аутентификацией. Кроме того, если вы храните ресурсы на поддомене, наличие файлов cookie замедляет трафик, так как приходится каждый раз переносить его, поэтому хранение файлов cookie приложения только на www
дает вам этот прирост скорости.
Вот учебник о том, как выполнить такое перенаправление в Apache.