#php #wordpress #session
#php #wordpress #сеанс
Вопрос:
Я видел много примеров о том, как определить, запущен ли сеанс PHP. Чего я не могу найти, так это как обрабатывать параметры cookie, если они запущены.
Вот мой код. Это в плагине WordPress. Если другой плагин запускает сеанс, я получаю предупреждение о настройке параметров cookie при запуске этого плагина. Как мне правильно установить эти параметры, если другой плагин уже запустил сеанс, не выполняя session_destroy и не испортив сеанс другого плагина?
$session_length = (60 * 60) * 8; // 1 hour x 8 = 8 hours
session_set_cookie_params($session_length, "/", null, false, true);
session_start();
setcookie(session_name(), session_id(), time() $session_length);
Комментарии:
1. Сеансы могут быть запущены только один раз.
2. Я это прекрасно понимаю. Это не дает ответа на вопрос о том, как установить параметры файлов cookie после того, как сеанс уже запущен.
3. Какова цель вашего сценария? Чего вы хотите достичь? Пожалуйста, посмотрите на аннотации в руководстве: php.net/manual/en/function.session-set-cookie-params.php
Ответ №1:
В целом ваш вопрос — в том виде, в котором он сейчас задан — кажется слишком общим. Учитывая ограниченную информацию, которую вы предоставили на данный момент, я не считаю, что вам следует иметь дело с сеансом вообще, если вы не уверены, что хотите быть единственным, кто это делает.
Поскольку $_SESSION
это глобальный особый случай в PHP и поскольку вы заявляете «Это в плагине WordPress», вы всегда будете произвольным one-of-many
плагином для работы с сеансом, который может использоваться / устанавливаться / отключаться любым другим плагином one-of-many
WordPress, который любой администратор WordPress может и будет загружать за пределамиуправление вашим плагином.
Поэтому:
Вам нужно определить $_SESSION
, уже запущен (с session_name()
), чтобы проверить,:
- а) там уже есть сеанс, а затем
- б) если этот сеанс является вашим собственным
и действуйте соответственно; в этом случае уничтожьте их сеанс, а затем установите свой собственный с его собственными параметрами.
И какого черта вы в 2021 году пытаетесь установить сеанс с помощью плагина WordPress с security = false
?! ЭТО необходимо улучшить и обновить, прежде чем делать что-либо еще.
Комментарии:
1. Спасибо, session_name — это то, что я искал. Что касается secure=false, то в настоящее время он находится на локальном тестовом сервере без сертификата. Я надеюсь, что вы носите шлем. Люди, которые ездят на мотоциклах и делают поспешные выводы, всегда должны иметь его под рукой.