一个不错的php session类,将session保存在数据库中,供大家参考。
1,php session类
/*
* session类
* by www.jbxue.com
*/
class Session {
//构造函数
public function __construct(){
session_set_save_handler(array(&$this, 'open'),array(&$this, 'close'),array(&$this, 'read'),array(&$this, 'write'),
array(&$this, 'destroy'),array(&$this, 'clean'));
session_start();
}
//打开数据库连接
public function open() {
$this->mysql = mysql_connect('localhost', 'root', 'mysql');
$bSeldb = mysql_select_db('sudhir', $this->mysql);
if (!$bSeldb) {
die ('Can\'t use Database : ' . mysql_error());
}
}
//写session
public function write($id, $data) {
$access = time();
$id = mysql_real_escape_string($id);
$access = mysql_real_escape_string($access);
$data = mysql_real_escape_string($data);
$sql = "REPLACE INTO sessions VALUES ('$id', '$access', '$data')";
return mysql_query($sql, $this->mysql) or die(mysql_error());
}
//读session
public function read($id) {
$id = mysql_real_escape_string($id);
$sql = "SELECT data FROM sessions WHERE id = '$id'";
if ($result = mysql_query($sql, $this->mysql)) {
if (mysql_num_rows($result)) {
$record = mysql_fetch_assoc($result);
return $record['data'];
}
}
return '';
}
//销毁session
public function destroy($id) {
$id = mysql_real_escape_string($id);
$sql = "DELETE FROM sessions WHERE id = '$id'";
return mysql_query($sql, $this->mysql);
}
//清除session
public function clean($max) {
$old = time() - $max;
$old = mysql_real_escape_string($old);
$sql = "DELETE FROM sessions WHERE access < '$old'";
return mysql_query($sql, $this->mysql);
}
//关闭数据库连接
public function close() {
mysql_close($this->mysql);
}
}
?>
2,调用示例:
//调用session类
require_once "session.php";
$oSession = new Session();
print_r($_SESSION); // First
$_SESSION['hi'] = "脚本学堂"; // Comment this Once sessoin is set
$_SESSION['test'] = "www.jbxue.com"; // Comment this Once sessoin is set
?>