Сеансы на PHP работают с сеансом типа Cookie, в то время как на стороне сервера информация о сессиях постоянно удаляется.
Для установки времени жизни в php, вы можете использовать функцию session_set_cookie_params перед началом сеанса:
session_set_cookie_params(3600,"/");
session_start();
Например, 3600 секунд - один час, на 2 часа 3600 * 2 = 7200.
Но это сессионный cookie, браузер может сам его истечь, если вы хотите сохранить большие сеансы времени (например, запомнить логин), вам нужно сохранить данные на сервере и стандартный cookie на стороне клиента.
У вас может быть таблица «Сессии»:
- session_id int
- session_hash varchar (20)
- текст сессионных данных
При проверке Cookie вы сохраняете «идентификатор сеанса» и «хэш» (для безопасности) на стороне клиента и можете сохранять данные сеанса на стороне сервера, например:
при входе в систему:
setcookie('sessid', $sessionid, 604800); // One week or seven days
setcookie('sesshash', $sessionhash, 604800); // One week or seven days
// And save the session data:
saveSessionData($sessionid, $sessionhash, serialize($_SESSION)); // saveSessionData is your function
Если пользователь вернется:
if (isset($_COOKIE['sessid'])) {
if (valide_session($_COOKIE['sessid'], $_COOKIE['sesshash'])) {
$_SESSION = unserialize(get_session_data($_COOKIE['sessid']));
} else {
// Dont validate the hash, possible session falsification
}
}
Очевидно, что перед отправкой данных сохраните все вызовы сеанса / куки-файлов.