Моя проблема связана с установкой Cookie для отслеживания начала новых сессий пользователей в браузере Google Chrome.
В браузере Firefox и Yandex описанная ниже логика работает корректно, в Chrome - чаще работает не корректно, от чего это зависит мне пока не понятно.
Для отладки использую локальный сервер OpenServer.
При первом запуске браузера создаётся новая сессия для сайта. Если Cookie последней сессии в этот момент нет я создаю эту куку с длительностью жизни 10 лет (setcookie()). Делаю это для того, чтобы при очередном запуске браузера можно было определить наличие у пользователя сессии в прошлом. В куку последней сессии 'phpSessIdLast' помещаю значение текущей сессии (session_id()).
После закрытия браузера пользователем и очередного запуска того же сайта на том же браузере должна создаться новая сессия (создаётся) и должна существовать Cookie последней сессии (существует), но эта Cookie почему-то равна текущей сессии (в преобладающем большинстве случаев), такого быть не должно. Напоминаю, что такое поведение наблюдается только в браузере Google Chrome.
Если закомментировать код в 12 строке, то состояние Cookie последней сессии остаётся ожидаемым. Создаётся ощущение, что функция setcookie() из 12 строки запускается асинхронно.
<?
session_start();
$statusOfNewSession = 0;
$_SESSION['phpSessId'] = session_id();
$expireTenYear = time() + 60 * 60 * 24 * 356 * 10; // + 3560 дней
if ($_COOKIE['phpSessIdLast']) // - > Если есть кука последней сессии
{
if ($_SESSION['phpSessId'] !== $_COOKIE['phpSessIdLast']) // - > Если текущая сессия не совпадает с кукой последней сессии
{
setcookie('phpSessIdLast', $_SESSION['phpSessId'], $expireTenYear, '/', null, false, true);
$statusOfNewSession = 1;
}
else
$statusOfNewSession = 2;
}
else
{
setcookie('phpSessIdLast', $_SESSION['phpSessId'], $expireTenYear, '/', null, false, true);
$statusOfNewSession = 3;
}
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
echo $statusOfNewSession;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть cmd скрипт для работы моего php кода из консолиВ этой же папке находится файл конфига и папка с php интерпретатором для, собственно,...