Я бы хотел, чтобы моя сессия работала на моем веб-сайте при использовании www. И когда он не используется. Я прочитал эту тему: PHP cookie problem – www или без www
И это сработает, но я не создаю куки здесь, а сеансы. Как я могу это решить? Также обратите внимание, что я не знаю, в каком домене будут запускаться мои скрипты, поэтому жесткая кодировка домена не является вариантом.
Есть ли способ сделать это?
спасибо
EDIT: Я заставляю, чтобы идентификаторы сеансов должны храниться в файлах cookie, поэтому применимо только это.
Используйте функцию session_set_cookie_params перед вызовом session_start, он позволяет вам установить домен сеанса и другие вещи, установить домен в свой домен с префиксом a. чтобы сеанс был доступен и для субдоменов.
Вы можете отразить php.ini
для этого. Добавьте это в php.ini, чтобы файл cookie сессии был сохранен в месте, доступном с или без www
session.cookie_domain = .example.com
Вы также можете попробовать альтернативу сделать это
ini_set("session.cookie_domain", ".example.com");
И вы можете получить имя хоста, используя переменную $_SERVER['HTTP_HOST']
.
PHP использует файлы cookie для идентификатора сеанса, так что это действительно та же проблема (и решение). Посмотрите конфигурацию сеанса.
Использование правильного имени хоста во всех запросах важно для сеансов. Однако, если вы собираетесь получать доступ к куки-файлам через несколько поддоменов, тогда вы можете указать параметр домена с предшествующим периодом. То есть,
.example.com
Я столкнулся с этой проблемой с моими файлами cookie, и ваша ссылка в вашем сообщении является отличным решением.
До сих пор я никогда не испытывал затруднений с сеансами. Он не зависит от доменных или поддоменов, они хранятся на стороне сервера.
Вы можете установить в файле конфигурации постоянный параметр DOMAIN_NAME или в БД, который будет использоваться для ваших файлов cookie, а затем изменить его только один раз.