通常,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) );
[MySql]PHP存取 Mysql 数据乱码终极解决方案 [MySql]解决Table xxx is marked as crashed and should … [MySql][MySQL]快速解决"is marked as crashed and shoul… [MySql]MySQL DELETE语法用法详解 [MySql]mysql中时间日期格式化 [MySql]修改mysql导入文件大小限制 [其他]MySql常用命令大全 [Web开发]把ACCESS的数据导入到Mysql中的方法详解 [Web开发]在ASP中轻松实现记录集分页显示的方法 [MySql]解决mysql 1040错误Too many connections的方法
|