Двойные сессии в wordpress

142
18 мая 2019, 14:10

Пишу плагин. В плагине на хук init вешаю функцию старта сессии.

  • plugin.php

    add_action('init', 'startSession', 1);
    
  • Функция 'startSession'

    function startSession()
    {
        session_start();
        $debugHandler = fopen(PLUGIN_PATH . 'debug.txt', 'a+');
        fwrite($debugHandler, current_time('mysql') . ' - ' . session_id() . "\n");
        fclose($debugHandler);
    }
    

Проблема возникает иногда. Заключается в том, что за одну загрузку страницы генерируются 2 сессии: одна из которых текущая (с момента открытия браузера), вторая - не понимаю откуда берётся. Отслеживаю при помощи записи лога в файл debug.txt - последние 3 строчки в функции.

Задача: Избавиться от лишней сессии легальным способом...

Новая информация:

Для второй сессии $_SERVER['HTTP_USER_AGENT'] = 'WordPress/4.9.8;http://site.loc'. Для первой сессии там лежит информация о браузере.

Answer 1

У вас за время одной загрузки страницы может несколько раз срабатывать ваша функция из-за того, что на странице выполняются ajax-запросы из js.

Используйте функцию session_status() для проверки текущего состояния сессии.

Answer 2

В результате тестирования выяснилось, что вторая сессия создаётся не браузером пользователя, а движком Wordpress. Определил это по переменной $_SERVER['HTTP_USER_AGENT'], которая содержала строку 'WordPress/4.9.8;...'.

Решил задачу тем, что перед запуском сессии проверяю $_SERVER['HTTP_USER_AGENT'] на наличие в ней подстроки 'Wordpress'. Если подстроки не найдено, то сессию стартую.

READ ALSO
Добавить статью на php

Добавить статью на php

Всем приветУ меня есть таблица со статьями с названием tbl_blog

112
Где на сервере хранить данные об текущем количестве пользователей?

Где на сервере хранить данные об текущем количестве пользователей?

Есть веб сайт где нужно показывать всем посетителям количество пользователей на данный момент, информация будет передаваться через сокет

93
Как безопасно добавить базу данных на сайт?

Как безопасно добавить базу данных на сайт?

Я хочу добавить базу данных на сайт, но для того, чтобы это сделать вphp файле я должен вставить, допустим, такой пример кода:

127
не доходят сообщения с Sendmail

не доходят сообщения с Sendmail

Сообщения якобы встают в очередь, но на почту не доходят

143