RomikChef:
Сессия храниться до тех пор пока открыто окно браузера???
совершенно верно
Кстати по-моему совершенно необязательно :) Сессионные данные на сервере могут и дольше храниться :) и все зависит от значения session.gc_maxlifetime в php.ini. Просто обычно там же пишут session.cookie_lifetime = 0 и кука сессионная ставится без указания времени жизни и живет только до тех пор пока открыто текущее окно браузера. Т.е. первый вызов session_start(); или попытка что-нибудь записать в сессию инициирует выдачу заголовка типа
Set-Cookie: PHPSESSID=b9118d27f8abb0337a87b447daa2cc12; path=/
(где PHPSESSID это значение по умолчанию session.name в php.ini)
и первую и вторую чать этого выражения легко определить в скрипте. Например session_name(); вернет строку "PHPSESSID", а session_id(); вернет строку "b9118d27f8abb0337a87b447daa2cc12".
Ну и поскольку при выдаче подряд двух заголовков Set-Cookie более высокий приоритет имеет переданный последним, никто не мешает нам продлить время жизни куки даже не трогая ini_set :)
Например на 10 минут:
session_start();
header("Set-Cookie: ".session_name()."=".session_id()."; expires=".gmdate ("l, d-M-y H:i:s", (600+time()))." GMT; path=/;");
При таком раскладе сессионная кука будет передаваться на сервер после закрытия и открытия заново браузера и если сессионные данные на сервере живы (а живут они обычно вроде бы 24 минуты по умолчанию ?), то все получится :)