a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > MySQL > 正文

解析php session_set_save_handler 函數的用法(mysql)

2020-03-22 19:06:04
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:
?php
/*============================文件說明========================================
@filename: session.html' target='_blank'>class.php
@description: 數據庫保存在線用戶session,實現在線用戶功能!
@notice: session過期時間一個小時,因為我們的站點是使用cookie(有效時間是1小時)登錄。
因此我們只記錄用戶登錄的時間,而不是刷新一次更新一次
刪除數據庫中session記錄的動作發生在用戶超時后執行這個文件或正常退出(session_destory)
@database: database:sessions field:sessionid(char32),uid(int10),last_visit(int10)
=============================================================================
*/
class session {
private $db;
private $lasttime=3600;//超時時間:一個小時
function session(&$db) {
$this- db =
session_module_name('user'); //session文件保存方式,這個是必須的!除非在Php.ini文件中設置了
session_set_save_handler(
array(&$this, 'open'), //在運行session_start()時執行
array(&$this, 'close'), //在腳本執行完成或調用session_write_close() 或 session_destroy()時被執行,即在所有session操作完后被執行
array(&$this, 'read'), //在運行session_start()時執行,因為在session_start時,會去read當前session數據
array(&$this, 'write'), //此方法在腳本結束和使用session_write_close()強制提交SESSION數據時執行
array(&$this, 'destroy'), //在運行session_destroy()時執行
array(&$this, 'gc') //執行概率由session.gc_probability 和 session.gc_divisor的值決定,時機是在open,read之后,session_start會相繼執行open,read和gc
);
session_start(); //這也是必須的,打開session,必須在session_set_save_handler后面執行
}
function unserializes($data_value) {
$vars = preg_split(
'/([a-zA-Z_/x7f-/xff][a-zA-Z0-9_/x7f-/xff]*)/|/',
$data_value, -1, PREG_SPLIT_NO_EMPTY |
PREG_SPLIT_DELIM_CAPTURE
);
for ($i = 0; isset($vars[$i]); $i++) {
$result[$vars[$i++]] = unserialize($vars[$i]);
}
return $result;
}
function open($path, $name) {
return true;
}
function close() {
$this- gc($this- lasttime);
return true;
}
function read($SessionKey){
$sql = "SELECT uid FROM sessions WHERE session_id = '".$SessionKey."' limit 1";
$query =$this- db- query($sql);
if($row=$this- db- fetch_array($query)){
return $row['uid'];
}else{
return "";
}
}
function write($SessionKey,$VArray) {
require_once(MRoot.DIR_WS_CLASSES .'db_mysql_class.php');
$db1=new DbCom();
// make a connection to the database... now
$db1- connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE);
$db1- query("set names utf8");
$this- db=$db1;
$SessionArray = addslashes($VArray);
$data=$this- unserializes($VArray);
$sql0 = "SELECT uid FROM sessions WHERE session_id = '".$SessionKey."' limit 1";
$query0 =$this- db- query($sql0);
if($this- db- num_rows($query0) =0){
if (isset($data['webid']) && !empty($data['webid'])) {
$this- db- query("insert into `sessions` set `session_id` = '$SessionKey',uid='".$data['webid']."',last_visit='".time()."'");
}
return true;
}else{
/*$sql = "update `sessions` set ";
if(isset($data['webid'])){
$sql .= "uid = '".$data['webid']."', " ;
}
$sql.="`last_visit` = null "
. "where `session_id` = '$SessionKey'";
$this- db- query($sql); */
return true;
}
}
function destroy($SessionKey) {
$this- db- query("delete from `sessions` where `session_id` = '$SessionKey'");
return true;
}
function gc($lifetime) {
$this- db- query("delete from `sessions` where unix_timestamp(now()) -`last_visit` '".$this- lasttime."'");
return true;
}
}
?

下面是php.ini中session的配置說明:
session.save_handler = "files"
存儲和檢索與會話關聯的數據的處理器名字。默認為文件("files")。
如果想要使用自定義的處理器(如基于數據庫的處理器),可用"user"。
有一個使用PostgreSQL的處理器:http://sourceforge.net/projects/phpform-ext/

session.save_path = "/tmp"
傳遞給存儲處理器的參數。對于files處理器,此值是創建會話數據文件的路徑。
Windows下默認為臨時文件夾路徑。
你可以使用"N[MODE]/path"這樣模式定義該路徑(N是一個整數)。
N表示使用N層深度的子目錄,而不是將所有數據文件都保存在一個目錄下。
[MODE]可選,必須使用8進制數,默認600(=384),表示每個目錄下最多保存的會話文件數量。
這是一個提高大量會話性能的好主意。
注意0: "N[MODE]/path"兩邊的雙引號不能省略。
注意1: [MODE]并不會改寫進程的umask。
注意2: php不會自動創建這些文件夾結構。請使用ext/session目錄下的mod_files.sh腳本創建。
注意3: 如果該文件夾可以被不安全的用戶訪問(比如默認的"/tmp"),那么將會帶來安全漏洞。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 97视频在线| 中文字幕一区在线观看视频 | 欧美视频在线观看不卡 | 毛片99| 国产精品成人免费视频 | 草逼导航 | 电影午夜精品一区二区三区 | 国产精品久久久久久久粉嫩 | 中文字幕电影在线 | 亚洲精品一区二区三区 | 女十八免费毛片视频 | 91久色| 日本精品久久 | 日韩国产欧美一区 | 日韩精品免费 | 男女免费在线观看视频 | 日韩一区二区三区在线视频 | 国产裸体bbb视频 | 成人精品久久 | 91麻豆产精品久久久 | 成人免费视频www在线观看我 | 欧美日韩国产综合网 | 午夜激情视频免费 | 99精品久久久久久 | 成人在线免费观看 | 高清av一区 | yiren22综合网成人 | 狠狠操夜夜操 | 亚洲色图欧美激情 | 日韩欧美一级在线 | 国产精品久久久久无码av | www.com欧美| 久久亚洲视频 | 中文字幕在线第一页 | 久久精品欧美一区二区三区不卡 | 91久久国产综合久久 | 欧美成人精品一区二区男人看 | 久草综合网 | 国产免费av大片 | 国产精品美女一区二区三区四区 | 欧美日韩在线观看中文字幕 |