Назад | Перейти на главную страницу

субдомен не распознает сеансы PHP

У меня есть веб-сайт с базой данных пользователей и формой входа. Эта система сработала на 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. Когда я заглядываю во вкладку Cookies в Safari Inspector, он показывает 1 SESSION, accounts.example.com.

Есть ли способ «перенести» файл cookie в другой поддомен? Любая помощь была бы замечательной! Спасибо!

Если вам нужно использовать cookie в обоих поддоменах www.example.com и accounts.example.com, вам нужно установить его в корневом домене example.com. Вам нужно изменить настройку PHP session.cookie_domain к ".example.com".

  1. В php.ini у вас может быть session.cookie_domain = ".example.com"
  2. Вариант .htaccess: php_value session.cookie_domain .example.com
  3. Или внутри скриптов PHP: ini_set('session.cookie_domain', '.example.com' );

Это предпочтительный порядок: если у вас есть доступ к конфигурации сервера, вы должны сделать это в php.ini из VirtualHostвовлечены. Третий вариант наихудший, так как вам придется менять его отдельно для каждого PHP-скрипта.