SESSION存放在数据库用法实例
本文实例讲述了SESSION存放在数据库用法。分享给大家供大家参考。具体如下:
<?php /* CREATETABLE`ws_sessions`( `session_id`varchar(255)binaryNOTNULLdefault'', `session_expires`int(10)unsignedNOTNULLdefault'0', `session_data`text, PRIMARYKEY(`session_id`) )TYPE=InnoDB; */ classsession{ //session-lifetime var$lifeTime; //mysql-handle var$dbHandle; functionopen($savePath,$sessName){ //getsession-lifetime $this->lifeTime=get_cfg_var("session.gc_maxlifetime"); //opendatabase-connection $dbHandle=@mysql_connect("localhost","root",""); $dbSel=@mysql_select_db("test",$dbHandle); //returnsuccess if(!$dbHandle||!$dbSel) returnfalse; $this->dbHandle=$dbHandle; returntrue; } functionclose(){ $this->gc(ini_get('session.gc_maxlifetime')); //closedatabase-connection return@mysql_close($this->dbHandle); } functionread($sessID){ //fetchsession-data $res=mysql_query("SELECTsession_dataASdFROMws_sessions WHEREsession_id='$sessID' ANDsession_expires>".time(),$this->dbHandle); //returndataoranemptystringatfailure if($row=mysql_fetch_assoc($res)) return$row['d']; return""; } functionwrite($sessID,$sessData){ //newsession-expire-time $newExp=time()+$this->lifeTime; //isasessionwiththisidinthedatabase? $res=mysql_query("SELECT*FROMws_sessions WHEREsession_id='$sessID'",$this->dbHandle); //ifyes, if(mysql_num_rows($res)){ //...updatesession-data mysql_query("UPDATEws_sessions SETsession_expires='$newExp', session_data='$sessData' WHEREsession_id='$sessID'",$this->dbHandle); //ifsomethinghappened,returntrue if(mysql_affected_rows($this->dbHandle)) returntrue; } //ifnosession-datawasfound, else{ //createanewrow mysql_query("INSERTINTOws_sessions( session_id, session_expires, session_data) VALUES( '$sessID', '$newExp', '$sessData')",$this->dbHandle); //ifrowwascreated,returntrue if(mysql_affected_rows($this->dbHandle)) returntrue; } //anunknownerroroccured returnfalse; } functiondestroy($sessID){ //deletesession-data mysql_query("DELETEFROMws_sessionsWHEREsession_id='$sessID'",$this->dbHandle); //ifsessionwasdeleted,returntrue, if(mysql_affected_rows($this->dbHandle)) returntrue; //...elsereturnfalse returnfalse; } functiongc($sessMaxLifeTime){ //deleteoldsessions mysql_query("DELETEFROMws_sessionsWHEREsession_expires<".time(),$this->dbHandle); //returnaffectedrows returnmysql_affected_rows($this->dbHandle); } } $session=newsession(); session_set_save_handler(array(&$session,"open"), array(&$session,"close"), array(&$session,"read"), array(&$session,"write"), array(&$session,"destroy"), array(&$session,"gc")); session_start(); //etc... ?>
希望本文所述对大家的php程序设计有所帮助。