2014-01-31 2 views
1

Мне нужно уничтожить сессию, если пользователь находится в режиме ожидания до 10 минут также, как найти время последней активности пользователя,сеанса автоматического истечения срока действия, если пользователь в режиме ожидания

if ($_SESSION['last_activity'] > 600) 
{ 
session_unset(); 
session_destroy(); 
} 

это правильный путь. .

+0

Вам не нужно называть 'session_destroy()'. Если вы вызываете 'session_destroy()', то вам нужно снова вызвать 'session_start()'. Кроме того, будьте осторожны, если вы продолжаете ** что-либо ** еще в сеансе, это также будет потеряно с 'session_unset()' – Styphon

+0

Возможный дубликат http://stackoverflow.com/questions/520237/how-do-i- expire-a-php-session-after-30-minute? lq = 1 –

+0

Возможный дубликат http://stackoverflow.com/questions/9049890/php-destroy-session-if-not-any-action-in-10- минут – Pwner

ответ

2

использование session.gc_maxlifetime

Set session.gc_maxlifetime = 600 in phi.ini 

или

ini_set('session.gc_maxlifetime',600); // in your script 
0
//on pageload 
session_start(); 

$idletime=60;//after 60 seconds the user gets logged out 

if (time()-$_SESSION['timestamp']>$idletime){ 
    session_destroy(); 
    session_unset(); 
}else{ 
    $_SESSION['timestamp']=time(); 
} 

//on session creation 
$_SESSION['timestamp']=time(); 
0

Проверка на активности перед сбросом времени:

if (isset($_SESSION['last_activity']) && $_SESSION['last_activity'] > 600){ 
    session_unset(); 
    session_destroy(); 
}else{ 
    $_SESSION['last_activity'] = time(); 
} 
Смежные вопросы