PHP上的会话使用Cookietypes的会话,而在服务器端会话信息不断删除。
为了在php中设置时间生命,可以在session_start之前使用函数session_set_cookie_params:
session_set_cookie_params(3600,"/"); session_start();
例如,3600秒是1小时,2小时3600 * 2 = 7200。
但它是会话cookie,浏览器可以自行过期,如果你想节省大量的时间会话(如记住login),你需要将数据保存在服务器和客户端的标准cookie。
你可以有一个表“会议”:
session_id int
session_hash varchar(20)
session_data文本
validation一个Cookie,你在客户端保存“session id”和“hash”(为了安全),你可以把会话的数据保存在服务器端,例如:
login时:
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 } }
显然,在发送数据之前保存所有会话/ cookie调用。