下面为session类的代码
<?php<BR>class session<BR>{<BR> static function init()<BR> {<BR> session_set_save_handler(<BR> array("session","open"),<BR> array("session","close"),<BR> array("session","read"),<BR> array("session","write"),<BR> array("session","destroy"),<BR> array("session","gc")<BR> );<BR> }<br><br> static function open($save_path,$session_name)<BR> {<BR> echo "session opening!<br>";<BR> /*global $db,$REMOTE_ADDR;<BR> $rs = $db->Execute("select * from Sessions where SessionID='".session_id()."'");<BR> $arry=$rs->FetchRow();<BR> if( $rs && $arry)<BR> {<BR> $db->Execute("update Sessions set SessionLast=NOW() where SessionID='".session_id()."'");<BR> }<BR> else<BR> {<BR> $query = "insert into Sessions set SessionID='".session_id()."',SessionName='$REMOTE_ADDR',SessionLast='NOW()'";<BR> //echo $query;<BR> $db->Execute($query);<BR> }*/<BR> return true;<BR> }<BR> static function close()<BR> {<BR> return(true);<BR> }<br><br> static function read($id)<BR> {<BR> echo "session reading now!<br>";<BR> global $db;<BR> return true;<BR> $timenow = strftime("%Y-%m-%d %H:%M:%S", time());<BR> $query = "select SessionData from Sessions where SessionID='$id' and SessionLast > '$timenow'";<BR> $rs = $db->Execute($query);<BR> if(list($SessionData) = $rs->FetchRow())<BR> {<BR> //echo $SessionData;<BR> return $SessionData;<BR> }<BR> else<BR> {<BR> return false;<BR> }<BR> }<br><br> static function write($id,$sess_data)<BR> {<BR> echo "session writing now!<br>";<BR> global $db;<BR> $rs = $db->Execute("select SessionID from Sessions where SessionID='$id'");<BR> $num = $rs->RecordCount();<BR> $unix_time = time()+MY_SESS_TIME;<BR> //echo MY_SESS_TIME;<BR> $dateleft = strftime("%Y-%m-%d %H:%M:%S", $unix_time);<BR> if($num <= 0)<BR> {<BR> $sql = "insert into Sessions set SessionData='$sess_data', SessionName='".$_SERVER["REMOTE_ADDR"]."', SessionLast='$dateleft', SessionID='".session_id()."'";<BR> }<BR> else<BR> {<BR> $sql = "update Sessions set SessionData='$sess_data', SessionName='".$_SERVER["REMOTE_ADDR"]."', SessionLast='$dateleft' where SessionID='$id'";<BR> }<BR> $db->Execute($sql);<BR> }<br><br> static function destroy($id)<BR> {<BR> echo "session destroying now!<br>";<BR> global $db;<BR> $sql = "DELETE FROM Sessions WHERE `SessionID` = '$id'";<BR> $rs = $db->Execute($sql);<BR> return $rs;<BR> // $sess_file = "$sess_save_path<b style="color:transparent">(、本文来源gao@!dai!ma.com搞$$代^@码网*</b><i>搞gaodaima代码</i>/sess_$id";<BR> //return(@unlink($sess_file));<BR> }<br><br> /*********************************************<BR> * WARNING - You will need to implement some *<BR> * sort of garbage collection routine here. *<BR> *********************************************/<BR> static function gc($maxlifetime)<BR> {<BR> echo "session maxlifetime now!<br>";<BR> global $db;<BR> $timenow = strftime("%Y-%m-%d %H:%M:%S", time());<BR> $sql = "DELETE FROM `$table_sessions` WHERE `SessionLast` < '$timenow'";<BR> return $sess_db->Execute($sql);<BR> //echo "now gc!<br>";<BR> return true;<BR> }<BR> // proceed to use sessions normally<BR>}<BR>
使用方法
include("session.class.php"); <BR>session::init(); <BR>session_start(); <BR>define("MY_SESS_TIME", 3600); //SESSION 生存时长 <BR>$_SESSION["test"] = "abcdef";<BR>