Причина:
Если закрыть окно браузера и открыть его снова, то в этот момент второй сеанс начался с другим ID, если используется веб-приложение имеет некоторые сессии на основе системы аутентификации пользователем должен снова войти в систему. В то же время пользователю необходимо дважды выйти из системы!
Решение:
Эта функция будет использовать реальные кук для идентификатора сеанса и обновляет время истечения с каждым выполнением сценария. Истечение срока действия равно директиве PHP «gc_maxlifetime» (по умолчанию) или каждому пользовательскому значению. Итак, поместите эту функцию в ваш PHP-файл. Нам это нужно.
<?php
// $expire = the time in seconds until a session have to expire
function start_session($expire = 0)
{
if ($expire == 0)
$expire = ini_get("session.gc_maxlifetime");
else
ini_set("session.gc_maxlifetime", $expire);
if (empty($_COOKIE['PHPSESSID']))
{
session_set_cookie_params($expire);
session_start();
}
else
{
session_start();
setcookie("PHPSESSID", session_id(), time() + $expire);
}
}
?>
Теперь в верхней части страницы, где вы выдавший session_id('the_session_id');
и session_start();
, удалить эти строки и начать сеанс связи с этим ниже кодом:
Чтобы начать сеанс с временем истечения срока действия, задаваемым PHP конфигурации
start_session();
Чтобы начать сеанс, который истекает через 1 час:
start_session(3600);
«когда я открываю новый браузер» - вы имеете в виду, если у вас есть FF, а затем открыть IE? –
Вы нашли решение этой проблемы, потому что мне нужно то же самое с моей сессией? –