轻松实现session的mysql处理

    技术2022-05-11  113

          通常,session都是保存在临时文件里的,但是,要是把它保存在数据库里,就会给我们带来很多好处,比如统计在线人数之类的。废话不说了,看程序:

    <?phpinclude("db_mysql.inc");

    function open ($save_path, $session_name) {  global $db,$REMOTE_ADDR;  $db->query("delete from Sessions where SessionLast<date_sub(now(),interval1 hour)");  if($db->query("select * from Sessions where SessionID='".session_id()."'")&& $arry=$db->fetch_array())     $db->query("update Sessions set SessionLast=NOW() whereSessionID='".session_id()."'");  else $db->query("insert into Sessions setSessionID='".session_id()."',SessionName='$REMOTE_ADDR',SessionLast='NOW()'");  return(true);}

    function close()

      return true;}

    function read ($id) {  global $db;    if(!$db->query("select SessionID from Sessions where SessionID='$id'")|| $db->num_rows()<=0)return false;  $SQL="select SessionData from Sessions where SessionID='$id'";  $db->query($SQL);  list($sess_data)=$db->fetch_row();  return($sess_data);}

    function write ($id, $sess_data) {  global $db;  if(!$db->query("select SessionID from Sessions where SessionID='$id'") ||$db->num_rows()<=0)return false;  if($db->query("update Sessions setSessionData='$sess_data',SessionLast=NOW() where SessionID='$id'"))  return true;  else return false;}

    function destroy ($id) {  global $db;  $db->query("delete from Sessions where SessionID='$id'");}

    function gc ($maxlifetime) {  return true;}

    session_set_save_handler ("open", "close", "read", "write", "destroy","gc");

    session_start();

    ?>注:数据表:SessionsCREATE TABLE Sessions (   SessionID varchar(50) NOT NULL,   SessionName varchar(50) NOT NULL,   SessionData blob,   SessionLast datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,   PRIMARY KEY (SessionID));


    最新回复(0)