Проблема времени сеанса PHP

Я использую 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 для установки определенного тайм-аута.