php自定义session示例分享

  下面为session类的代码

  

复制代码 代码如下:

  <?php

  class session

  {

  static function init()

  {

  session_set_save_handler(

  array("session","open"),

  array("session","close"),

  array("session","read"),

  array("session","write"),

  array("session","destroy"),

  array("session","gc")

  );

  }

  static function open($save_path,$session_name)

  {

  echo "session opening!<br>";

  /*global $db,$REMOTE_ADDR;

  $rs = $db->Execute("select * from Sessions where SessionID='".session_id()."'");

  $arry=$rs->FetchRow();

  if( $rs && $arry)

  {

  $db->Execute("update Sessions set SessionLast=NOW() where SessionID='".session_id()."'");

  }

  else

  {

  $query = "insert into Sessions set SessionID='".session_id()."',SessionName='$REMOTE_ADDR',SessionLast='NOW()'";

  //echo $query;

  $db->Execute($query);

  }*/

  return true;

  }

  static function close()

  {

  return(true);

  }

  static function read($id)

  {

  echo "session reading now!<br>";

  global $db;

  return true;

  $timenow = strftime("%Y-%m-%d %H:%M:%S", time());

  $query = "select SessionData from Sessions where SessionID='$id' and SessionLast > '$timenow'";

  $rs = $db->Execute($query);

  if(list($SessionData) = $rs->FetchRow())

  {

  //echo $SessionData;

  return $SessionData;

  }

  else

  {

  return false;

  }

  }

  static function write($id,$sess_data)

  {

  echo "session writing now!<br>";

  global $db;

  $rs = $db->Execute("select SessionID from Sessions where SessionID='$id'");

  $num = $rs->RecordCount();

  $unix_time = time()+MY_SESS_TIME;

  //echo MY_SESS_TIME;

  $dateleft = strftime("%Y-%m-%d %H:%M:%S", $unix_time);

  if($num <= 0)

  {

  $sql = "insert into Sessions set SessionData='$sess_data', SessionName='".$_SERVER["REMOTE_ADDR"]."', SessionLast='$dateleft', SessionID='".session_id()."'";

  }

  else

  {

  $sql = "update Sessions set SessionData='$sess_data', SessionName='".$_SERVER["REMOTE_ADDR"]."', SessionLast='$dateleft' where SessionID='$id'";

  }

  $db->Execute($sql);

  }

  static function destroy($id)

  {

  echo "session destroying now!<br>";

  global $db;

  $sql = "DELETE FROM Sessions WHERE `SessionID` = '$id'";

  $rs = $db->Execute($sql);

  return $rs;

  // $sess_file = "$sess_save_path/sess_$id";

  //return(@unlink($sess_file));

  }

  /*********************************************

  * WARNING - You will need to implement some *

  * sort of garbage collection routine here. *

  *********************************************/

  static function gc($maxlifetime)

  {

  echo "session maxlifetime now!<br>";

  global $db;

  $timenow = strftime("%Y-%m-%d %H:%M:%S", time());

  $sql = "DELETE FROM `$table_sessions` WHERE `SessionLast` < '$timenow'";

  return $sess_db->Execute($sql);

  //echo "now gc!<br>";

  return true;

  }

  // proceed to use sessions normally

  }

  使用方法

  

复制代码 代码如下:

  include("session.class.php");

  session::init();

  session_start();

  define("MY_SESS_TIME", 3600); //SESSION 生存时长

  $_SESSION["test"] = "abcdef";