php自定义session示例分享

前端技术 2023/09/09 PHP

下面为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\";

本文地址:https://www.stayed.cn/item/25818

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。