Я использую PHP5 здесь. Я сделал систему входа в систему, которая проверяет имя пользователя и пароль на записи в базе данных. Я хочу использовать сеансы для хранения зарегистрированного значения. Например, когда я дойду до зоны, где я «вхожу» в пользователя успешно:
if($errors = 0) { $_SESSION['logged'] = "1"; }
Проблема в том, что я хочу, чтобы $_SESSION['logged']
оставался активным, скажем, 5 минут, поэтому, когда я сделаю if($_SESSION['logged'] == "1")
после этого времени, чтобы вернуть false. Кроме того, я хотел бы удалить этот сеанс после того, как пользователь закроет браузер. В принципе, мне нужна конфигурация сеанса, чтобы пользователь мог спокойно покинуть свой стол, а когда он или кто-то нажмет обновить через 10 минут или снова войдет после закрытия браузера, сеанс будет удален, а доступ будет ограничен.
Может ли кто-нибудь помочь? Благодарю.
Используйте session_set_cookie_params()
чтобы изменить время жизни файла cookie сеанса. Обратите внимание, что по умолчанию оно равно 0
что означает, что cookie установлен до тех пор, пока пользователь не выйдет из браузера. Вы можете сделать это следующим образом:
/* Set to 0 if you want the session cookie to be set until the user closes the browser. Use time() + seconds otherwise. */ session_set_cookie_params(0); session_start();
Затем проверьте последнее время активности, обновляйте каждый раз, когда кто-то посещает страницу.
if(($_SESSION['lastActivity'] + 300) < time()) { // timeout, destroy the session. session_destroy(); unset($_SESSION); die('Timeout!'); } else { $_SESSION['lastActivity'] = time(); }
сif(($_SESSION['lastActivity'] + 300) < time()) { // timeout, destroy the session. session_destroy(); unset($_SESSION); die('Timeout!'); } else { $_SESSION['lastActivity'] = time(); }
-if(($_SESSION['lastActivity'] + 300) < time()) { // timeout, destroy the session. session_destroy(); unset($_SESSION); die('Timeout!'); } else { $_SESSION['lastActivity'] = time(); }
Вместо того, чтобы устанавливать его в один, почему бы вам не установить $_SESSION['logged_time'] = time();
а затем проверить время по времени () в вашем приложении?
Если вы хотите завершить весь сеанс, то конкретная спецификация может измениться в зависимости от вашего обработчика сеанса, но для обработчика сеанса по умолчанию (и любого другого хорошо обработанного обработчика сеанса) вы хотите проверить http: // us3 .php.net / ручной / EN / session.configuration.php
Вы можете изменить настройки конфигурации session.cookie_lifetime , например, в файле php.ini или .htaccess:
session.cookie_lifetime указывает время жизни файла cookie в секундах, которое отправляется в браузер. Значение 0 означает «пока браузер не будет закрыт». По умолчанию 0.
Это означает (я думаю), что вы не можете иметь оба срока действия на основе тайм-аута и истечения срока действия, когда браузер закрыт. Поэтому, возможно, лучший вариант – сохранить значение по умолчанию и установить свой собственный таймер в $_SESSION
как предложили другие, что делает этот ответ бессмысленным.
Сеансы остаются живыми, пока пользователь остается на вашем сайте. Вам нужно будет использовать файлы cookie для установки определенного тайм-аута.