сессии и их продолжительность жизни

trompert

Guest
сессии и их продолжительность жизни

как сделать чтобы сессия закрывалась после закрытия окна браузера? вроде это по умолчанию должно быть, или уже нет?
 

Alkinoy

Guest
Файл сессии не уничтожается. Уничтожается кука с sesid в браузере - он ее в памяти держит (это если время жизни куки 0). А в php.ini есть параметр, который задает - насколько часто (в процентах) при запуске процессора РНР он просматривает каталог с файлами сессий и убивает просроченные. Но лучше его не менять - не зная sesid никто доступ к сессии не получит (к данным в сессии).
 

RomikChef

Guest
Сессия закрывается, если ты не химичил с временем жизни сессионной куки, которое должно быть 0
 

Vinny

Guest
Сервер не знает когда у клиента закрывается браузер и узнать не может... Сессия живет определенное время после последнего обращения...
 

trompert

Guest
хорошо, конкретный случай - запаролил несколько файлов с помощью:
session_start();
if($nick!="admin")
{
header("Location: entry.php");
exit;
}

соответственно в файле entry.php еслт пароль правилен - ставим:
session_start();
session_register("nick");
$nick="admin";

Если заходим в первый раз - требует пароль. вводим пароль , входим. закрываем браузер, открываем в новом окне - пароля не требует.. почему? и как сделал чтобы требовался пароль всегда при открытии в новом окне?
 

Vinny

Guest
во время старта сессии тебе пишется кук с сессионным id. при открытии браузера и заходе на страничку этот кук посылается серваку, PHP по этому id поднимает сессию...
 

trompert

Guest
а как тогда убивать этот кук сразу после закрытия браузера?
 

RomikChef

Guest
Сессия закрывается, если ты не химичил с временем жизни сессионной куки, которое должно быть 0

сколько раз еще повторить, чтобы дошло?
 

trompert

Guest
ничего не понимаю.. тогда что я неправильно сделал? с временем жизни сессионной куки, которое должно быть 0 не химичил. где можно его явно прописать? я так понял - session_set_cookie_params ("0"); ?
 

RomikChef

Guest
HEm ты спутал две директивы
session.cookie_lifetime = 0
и
session.gc_maxlifetime = 1440
вторая устанавливает время жизни сессии и в данном вопросе не при чем.
а нужна как раз первая. должно быть 0

trompert, правильно, только без кавычек
session_set_cookie_params (0);
 

Alkinoy

Guest
Автор оригинала: trompert
а как тогда убивать этот кук сразу после закрытия браузера?
Я же тебе писал - если настроек ты не менял - кука сама убъется как только закроют браузер!!!! Читай внимательнее!!
 

trompert

Guest
Alkinoy и все. - я ж вам писал - что не убивается.. может у провайдера что? сейчас пробую варианты с session_set_cookie_params (0);
 

RomikChef

Guest
напиши phpinfo();
и посмотри значения этих параметров.
 

trompert

Guest
session.cookie_lifetime - 0!
и все равно - закрываю браузер, открываю в новом окне - все переменные сессий остаются старые.
есть какие-то версии "прокси, все кешируется".. в какоую сторону копать?
 

RomikChef

Guest
открой в новом окне скрипт с одной строчкой
print_r($_HTTP_COOKIE_VARS);
будет кука PHPSESSID?
если да, то надо копать там, где ты сказал. если нет - то копай в своем коде. Дело не в сессиях.

ПОСЛЕ ЗАКРЫТИЯ ОКРА С СЕССИЕЙ, КОНЕЧНО

Э! а ты часом с session_id() не баловался?
 

trompert

Guest
RomikChef - нет, вообще ничего не показывает.
вот, привожу код, может и правда, просто облажался где?
if (isset($submit))
{
if ((($nick!="admin2")||($passwd!="4928"))and(($nick!="admin1")||($passwd!="4927")))
{
header("Location: entry.php");
exit;
}
else
{
session_start();
session_unregister("nick");
print $nick;
session_register("nick");
print $nick;
//header("Location: index.php");
}
}
else
{
?>
<form action="entry.php" method="post">
?????:<input type="text" name="nick"><br>
??????:<input type="password" name="passwd"><br>
<input type="submit" name="submit">
</form>
<?
}
?>
так вот. после того как я с этого компьютера зарегистрировался как admin1 - зайти как admin2 не получается. все равно выдается admin1. и почему не работает session_unregister?
 

Vinny

Guest
session_start(); должен быть в начале скрипта... или не тут собака порылась?
 
Сверху