Обнаружена активная php сессия wordpress как исправить ошибку
Перейти к содержимому

Обнаружена активная php сессия wordpress как исправить ошибку

Получение критического предупреждения «Обнаружена активная сессия PHP» в wordpress

Сеанс PHP был создан вызовом функции session_start(). Это мешает REST API и петлевым запросам. Сеанс должен быть закрыт с помощью session_write_close() перед выполнением каких-либо HTTP-запросов.

3 ответа

В большинстве случаев настоящей причиной вышеуказанных ошибок является неверный механизм использования сессий PHP в плагинах или темах, когда они используют функцию session_start().

Теперь вам нужно определить, какой плагин вызывает эту проблему, отключив ваш плагин один за другим.

Затем в этом плагине вам нужно найти фрагмент кода, похожий на этот:

Затем измените его на:

Тогда все готово. В большинстве случаев это решит проблему. Удачи!

Часто эта критическая проблема вызвана конфликтом в SESSION при использовании функции PHP session_start() . Например, я использовал плагин Calculation в WordPress, и после обновления версии WordPress возникла эта ошибка. Итак, я обнаружил плагин, который вызывает эту проблему, как активированные/деактивированные плагины один за другим.

РЕШЕНИЕ этих ошибок: В диспетчере файлов моего сайта я получил файлы .php плагина и искал функцию session_start() . Там, где она использовалась после нее, я использовал эту функцию в строке session_write_close();

Используем PHP-сессии в WordPress

Сегодня я хочу рассказать, как использовать сессии PHP в WordPress . В стандартном PHP-приложении сессия начинается после вызова функции session_start , запущенной в начале PHP-скрипта . Вам нужно открыть файл header.php используемой темы и добавить туда следующий код:

Но этот метод сложно назвать самым эффективным. WordPress предлагает API Actions , к которому можно привязывать собственные функции. В приведенном далее примере используется как раз этот метод. Добавьте следующий код в самое начало файла functions.php .

  1. Мы воспользуемся событием init , с помощью которого можно запустить PHP-сессию . При первой инициализации WordPress мы добавляем действие, которое вызывает функцию:
  1. Далее создаем функцию start_session . Обратите внимание, что функция сначала проверяет, активна ли сессия, и только потом запускает новую сессию при помощи функции session_id :

Закрываем PHP-сессию

Функция session_destroy позволяет очистить сессию PHP . Но когда именно вызывать эту функцию? Многое зависит от самого приложения. WordPress также предлагает несколько способов реализовать это при помощи API Actions .

  1. В WordPress может потребоваться очистить сессию при выходе пользователя из системы, либо при авторизации нового пользователя на сайте. Для вызова функции end_session() , которую мы создадим позже, будут использоваться хуки wp_logout и wp_login :
  1. Далее создаем функцию end_session :

Принудительное закрытие сессии

Можно использовать собственный хук, чтобы с помощью PHP закрыть сессию в любом фрагменте шаблона. Мы воспользуемся do_action для вызова функции end_session , которую мы создали выше.

  1. В файл functions.php нужно добавить следующий код:

Если вы все сделали правильно, то самый верх вашего файла functions.php будет выглядеть следующим образом:

Теперь нужно добавить глобальную переменную $_SESSION , которой можно воспользоваться в любой момент при работе с приложением. Переменная является массивом, и ниже приведен пример добавления данных в массив сессии:

Что нужно учесть:

Если вы занимаетесь разработкой масштабируемого сайта, то возможно вам и не придется использовать эти сессии. HTTP – это протокол без запоминания состояний, сессии PHP основываются на состояниях. Сессии хранятся на сервере и обрабатываются им же. Маршрутизация каждой сессии до нужного сервера требует более сложной конфигурации, и создает проблемы для пользователей, чьи сессии хранятся на этом сервере.

По возможности, информацию о сессиях лучше хранить в браузере. Это позволит сэкономить ресурсы сервера, а также избавиться от ненужного функционала.

Спасибо, что были с нами! Надеюсь, вам пригодится эта статья, и если у вас возникли вопросы, обязательно задайте их в комментариях!

Пожалуйста, опубликуйте свои отзывы по текущей теме статьи. За комментарии, лайки, дизлайки, подписки, отклики огромное вам спасибо!

Валентин Сейидов автор-переводчик статьи « Using PHP Sessions in WordPress »

PHP сессии для сайта плагин WordPress

Оптимизация сайта

Привет! Мы продолжаем разбирать самые интересные и самые полезные плагины для сайта WordPress! Сегодня я покажу вам как добавить на свой сайт PHP сессии. Данный плагин реализует собственные обработчики сессий PHP, опираясь на базу данных WordPress. Это позволяет плагинам, темам и пользовательскому коду, безопасно использовать PHP $_SESSIONs в распределенной среде, где tempfile хранилища по умолчанию в PHP просто не будет работать.

Установить плагин WordPress Native PHP Sessions вы сможете прямо из своей админ-панели. Перейдите на страницу: Плагины — Добавить новый , введите название плагина в форму поиска, нажмите Enter, установите и активируйте плагин.

Native PHP Sessions for WordPress

Далее, после установки и активации плагина, перейдите на страницу: Инструменты — Sessions . Здесь у вас будут отображаться все активные php сессии. В сессии вы можете узнать:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *