下面寫的這個session類能夠完全解決session不過時以及sessionid不變的問題。 php
<?php /** * 擴展Session類(簡單封裝) * * @author slimboy * */ class Session { /** * 初始化 */ static function _init(){ ini_set('session.auto_start', 0); //Session::start(); } /** * 啓動Session */ static function start() { session_start(); } /** * 設置Session * * @param $name Session名稱 * @param $value 值 * @param $time 超時時間(秒) */ public static function set($name,$value,$time){ if(empty($time)){ $time = 1800; //默認值 } $_SESSION[$name] = $value; $_SESSION[$name.'_Expires'] = time() + $time; } /** * 獲取Session值 * * @param $name Session名稱 */ public static function get($name){ //檢查Session是否已過時 if(isset($_SESSION[$name.'_Expires']) && $_SESSION[$name.'_E xpires']>time()){ return $_SESSION[$name]; }else{ Session::clear($name); return null; } } /** * 設置Session Domain * * @param $sessionDomain 域 * @return string */ static function setDomain($sessionDomain = null) { $return = ini_get('session.cookie_domain'); if(!empty($sessionDomain)) { ini_set('session.cookie_domain', $sessionDomain);//跨 域訪問Session } return $return; } /** * 清除某一Session值 * * @param $name Session名稱 */ static function clear($name){ unset($_SESSION[$name]); unset($_SESSION[$name.'_Expires']); } /** * 重置銷燬Session */ static function destroy(){ unset($_SESSION); session_destroy(); } /** * 獲取或設置Session id */ static function sessionid($id=null){ return session_id($id); } } ?>簡單調用:
<?php //設置session Session::set('UserId', $userid, 3600); //讀取session $userId = Session::get('UserId'); ?>