class CustomSession{
private static $db_host="localhost";
private static $db_user="root";
private static $db_password="";
private static $database="session";
private $conn;
public static function getInstance(){
static $instance=null;
if($instance==null){
$instance=new CustomSession();
}
return $instance;
}
public function __construct(){
session_set_save_handler(
array($this,"open"),
array($this,"close"),
array($this,"read"),
array($this,"write"),
array($this,"destroy"),
array($this,"gc")
);
}
public function __destruct(){
session_write_close();
}
public function open(){
$this->cOnn=mysql_connect(CustomSession::$db_host,CustomSession::$db_user,CustomSession::$db_password);
mysql_select_db(CustomSession::$database,$this->conn);
}
public function close(){
mysql_close($this->conn);
}
public function read($id){
$escaped_id=mysql_escape_string($id);
$res=$this->query("select * from `session` where `sessionid`='$escaped_id'");
if($row=mysql_fetch_assoc($res)){
$this->query("update `session` set `timetamp`=UTC_TIMESTAMP() where `sessionid`='$escaped_id'");
return $row['data'];
}
return "";
}
public function write($id,$data){
$query="replace into `session` (`sessionid`,`data`,`ip`,`timestamp`) values ('%s','%s','%s',UNIX_TIMESTAMP(UTC_TIMESTAMP()))";
$this->query(sprintf($query,mysql_escape_string($id),mysql_escape_string($data),$_SERVER["REMOTE_ADDR"]));//www.111cn.net
}
public function destroy($id){
$escaped_id=mysql_escape_string($id);
$res=$this->query("delete from `session` where `id`='$escaped_id'");
return (mysql_affected_rows($res)==1);
}
public function gc($lifetime){
$this->query("delete from `session` where UNIX_TIMESTAMP(UTC_TIMESTAMP())-`timestamp` > $lifetime");
}
public function query($query){
$res=mysql_query($query,$this->conn);
return $res;
}
}
?>
|