Настройка времени истечения сеанса при входе в систему - PullRequest
2 голосов
/ 24 ноября 2010

В моем сценарии входа в систему я поставил флажок, чтобы люди могли проверять, хотят ли они оставаться в системе. Я назвал флажок "stayin".

Теперь проблема в том, что, когда пользователь приходит непосредственно к индексу страницы входа в систему, сеанс уже установлен (и он истекает, когда «сессия заканчивается» - или, скорее, когда браузер выключен). Итак, допустим, вы отметили поле «Держать меня в системе», вы просматриваете страницу, а затем выключаете браузер и возвращаетесь назад - вы все равно не войдете в систему, потому что установка времени жизни сеанса не работает, потому что сеанс всегда устанавливается без определенного времени жизни индексным скриптом. Поскольку не все хотят войти в систему все время, я не могу действительно установить истечение срока действия "session_set_cookie_parameters" на "никогда", прежде чем я использую session_start () (именно поэтому session_set_cookie_params используется в моем сценарии ПОСЛЕ session_start () (я я не уверен, что это действительно работает)).

Итак, для индексного скрипта я просто использую session_start (); и проверьте, есть ли значение для «Имя пользователя» и перенаправьте пользователя после входа в систему. И для сценария действия:

<?php
session_start();
if(isset($_POST['stayin'])){ // In case they want to be kept logged in.
session_set_cookie_params(999999999,"/path");
}
?>

Я использую session_start () в самом верху каждого скрипта. Использование PHP версии 4.4.9.

Ответы [ 3 ]

0 голосов
/ 24 ноября 2010

Возможно, вы захотите использовать $ _COOKIES вместо $ _SESSION.Вот некоторые чтения для вас:

http://www.tuxradar.com/practicalphp/10/1/0

0 голосов
/ 05 августа 2011

Лучший способ установить время истечения срока действия cookie сеанса:

$cookie = session_get_cookie_params();
session_set_cookie_params( 2851200, $cookie['path'], $cookie['domain'],
$cookie['secure']);
0 голосов
/ 24 ноября 2010

AFAIK session_set_cookie_params () изменяет только длину файла cookie сеанса на время выполнения сценария (см. http://www.php.net/manual/en/function.session-set-cookie-params.php).. Единственный способ навсегда изменить его - это изменить запись в файле php.ini, но этоизменит все сеансы, чтобы иметь длительный тайм-аут, что тоже не то, что вам нужно. Используете ли вы куки-файлы на стороне клиента, а не сеансы на стороне сервера? Если это так, вы можете установить срок жизни куки-файлов индивидуальноsetcookie () в зависимости от того, отмечен ли пользователь флажком или нет.

<?php
if(isset($_POST['stayin'])){ // In case they want to be kept logged in.
   setcookie('logincookie', true, 999999999, '/path');
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...