ホームページ >データベース >mysql チュートリアル >session存储到mysql数据库_MySQL
根据qq互联中的session类和php官方上的例子,整理
<?phpini_set ('error_reporting',E_ALL);ini_set('display_errors',TRUE);class session{const db_host = '127.0.0.1';const db_user = 'root';const db_password ='';const db_name = 'test';const db_table = 'tbl_session';private $lifetime;private $dbHandle;function open($path,$id){ $con = @mysql_connect(self::db_host,self::db_user,self::db_password); $sel = @mysql_select_db(self::db_name,$con); $this->lifetime = get_cfg_var("session.gc_maxlifetime"); $this->dbHandle = $con; if(!$con || !$sel) return false; return true; }function close(){ $this->gc($this->lifetime); return @mysql_close($this->dbHandle);}function read($id){ $rs = @mysql_query("select session_data data from ".self::db_table." where session_expires dbHandle); $row = @mysql_fetch_assoc($rs); return $row?$row['data']:'';}function write($id,$data){ $newEXP = time()+ ini_get("session.gc_maxlifetime"); $sel = mysql_query("select * from ".self::db_table." where session_id= '".$id."'",$this->dbHandle); if(mysql_affected_rows($this->dbHandle)){ $rs = @mysql_query("update ".self::db_table." set session_data = '".$data."', session_expires = '".$newEXP."' WHERE session_id = '".$id."'",$this->dbHandle); if(@mysql_affected_rows($this->dbHandle)) return true; }else{ $rs = @mysql_query("insert into ".self::db_table." (session_id,session_data,session_expires)values('".$id."','".$data."','".$newEXP."')",$this->dbHandle); if(@mysql_affected_rows($rs)) return true; } return false;}function destroy($id){ @mysql_query("delete from ".self::db_table." where session_id = '".$id."'",$this->dbHandle);}function gc($lifetime){ @mysql_query("delete from ".self::db_table." where sessoin_expires > '".time()."'",$this->dbHandle);}}$session = new session();session_set_save_handler(array(&$session,'open'),array(&$session,'close'),array(&$session,'read'),array(&$session,'write'),array(&$session,'destroy'),array(&$session,'gc'));session_start();