Пишу плагин. В плагине на хук 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'. Для первой сессии там лежит информация о браузере.
У вас за время одной загрузки страницы может несколько раз срабатывать ваша функция из-за того, что на странице выполняются ajax-запросы из js.
Используйте функцию session_status()
для проверки текущего состояния сессии.
В результате тестирования выяснилось, что вторая сессия создаётся не браузером пользователя, а движком Wordpress. Определил это по переменной $_SERVER['HTTP_USER_AGENT'], которая содержала строку 'WordPress/4.9.8;...'.
Решил задачу тем, что перед запуском сессии проверяю $_SERVER['HTTP_USER_AGENT'] на наличие в ней подстроки 'Wordpress'. Если подстроки не найдено, то сессию стартую.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть веб сайт где нужно показывать всем посетителям количество пользователей на данный момент, информация будет передаваться через сокет
Я хочу добавить базу данных на сайт, но для того, чтобы это сделать вphp файле я должен вставить, допустим, такой пример кода: