轻松实现session的mysql处理

PHP 专栏收录该内容
2 篇文章 0 订阅

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

<?php
include("db_mysql.inc");

function open ($save_path, $session_name) {
  global $db,$REMOTE_ADDR;
  $db->query("delete from Sessions where SessionLast<date_sub(now(),interval
1 hour)");
  if($db->query("select * from Sessions where SessionID='".session_id()."'")
&& $arry=$db->fetch_array())
     $db->query("update Sessions set SessionLast=NOW() where
SessionID='".session_id()."'");
  else $db->query("insert into Sessions set
SessionID='".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 set
SessionData='$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();

?>
注:
数据表:Sessions
CREATE 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
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值