轻松实现session的mysql处理
2002-01-07 10:13
876 查看
通常,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)
);
<?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)
);
相关文章推荐
- 轻松实现asp.net中遍历cookies,session,application,小总结
- 轻松实现asp.net中遍历cookies,session,application,小总结
- mutt+msmtp轻松实现邮件自动发送功能
- 使用CGLIB轻松实现延迟加载(Lazyload)
- asp.net购物车实现-------结合session方式
- PHP实现多服务器SESSION共享
- 利用Docker轻松实现云原生应用
- apache+tomcat集群 实现负载均衡和session复制
- hibernate 的Session中save和load,close方法的底层实现原理
- php采用session实现防止页面重复刷新
- 轻松实现JavaScript图片切换
- 使用SyncNavigator轻松实现数据库异地同步、断点续传、异构同步
- Android 轻松实现语音识别
- Web端轻松实现音视频聊天通话
- 使用COOKIE对像实现保存用户基本信息(结合Session),ASP.Net实现用户登录全过程
- Go实现Session
- centos下搭建nginx+tomcat实现集群负载与session复制
- Tomcat实现Session ID的持久化保存实现
- 用JavaScrpt实现文件夹简单轻松加密的实现方法图文
- nodejs通过session实现身份验证