欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

解析php session_set_save_handler 函數(shù)的用法(mysql)_PHP教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:php小經(jīng)驗(yàn):解析preg_match與preg_match_all 函數(shù)
正則表達(dá)式在 PHP 中的應(yīng)用 在 PHP 應(yīng)用中,正則表達(dá)式主要用于: 正則匹配:根據(jù)正則表達(dá)式匹配相應(yīng)的內(nèi)容 正則替換:根據(jù)正則表達(dá)式匹配內(nèi)容并替換 正則分割:根據(jù)正則表達(dá)式分割字符串 在 PHP 中有兩類(lèi)正則表達(dá)式函數(shù),一類(lèi)是 Perl 兼容正則表達(dá)式函數(shù),一類(lèi)是 POSI

本篇文章是對(duì)php中session_set_save_handler 函數(shù)的用法(mysql)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下   復(fù)制代碼 代碼如下:
<?php
/*============================文件說(shuō)明========================================
@filename: session.class.php
@description: 數(shù)據(jù)庫(kù)保存在線用戶session,實(shí)現(xiàn)在線用戶功能!
@notice: session過(guò)期時(shí)間一個(gè)小時(shí),因?yàn)槲覀兊恼军c(diǎn)是使用cookie(有效時(shí)間是1小時(shí))登錄。
因此我們只記錄用戶登錄的時(shí)間,而不是刷新一次更新一次
刪除數(shù)據(jù)庫(kù)中session記錄的動(dòng)作發(fā)生在用戶超時(shí)后執(zhí)行這個(gè)文件或正常退出(session_destory)
@database: database:sessions field:sessionid(char32),uid(int10),last_visit(int10)
=============================================================================
*/
class session {
private $db;
private $lasttime=3600;//超時(shí)時(shí)間:一個(gè)小時(shí)
function session(&$db) {
$this->db = &$db;
session_module_name('user'); //session文件保存方式,這個(gè)是必須的!除非在Php.ini文件中設(shè)置了
session_set_save_handler(
array(&$this, 'open'), //在運(yùn)行session_start()時(shí)執(zhí)行
array(&$this, 'close'), //在腳本執(zhí)行完成或調(diào)用session_write_close() 或 session_destroy()時(shí)被執(zhí)行,即在所有session操作完后被執(zhí)行
array(&$this, 'read'), //在運(yùn)行session_start()時(shí)執(zhí)行,因?yàn)樵趕ession_start時(shí),會(huì)去read當(dāng)前session數(shù)據(jù)
array(&$this, 'write'), //此方法在腳本結(jié)束和使用session_write_close()強(qiáng)制提交SESSION數(shù)據(jù)時(shí)執(zhí)行
array(&$this, 'destroy'), //在運(yùn)行session_destroy()時(shí)執(zhí)行
array(&$this, 'gc') //執(zhí)行概率由session.gc_probability 和 session.gc_divisor的值決定,時(shí)機(jī)是在open,read之后,session_start會(huì)相繼執(zhí)行open,read和gc
);
session_start(); //這也是必須的,打開(kāi)session,必須在session_set_save_handler后面執(zhí)行
}
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的配置說(shuō)明:
session.save_handler = "files"
存儲(chǔ)和檢索與會(huì)話關(guān)聯(lián)的數(shù)據(jù)的處理器名字。默認(rèn)為文件("files")。
如果想要使用自定義的處理器(如基于數(shù)據(jù)庫(kù)的處理器),可用"user"。
有一個(gè)使用PostgreSQL的處理器:http://sourceforge.net/projects/phpform-ext/

session.save_path = "/tmp"
傳遞給存儲(chǔ)處理器的參數(shù)。對(duì)于files處理器,此值是創(chuàng)建會(huì)話數(shù)據(jù)文件的路徑。
Windows下默認(rèn)為臨時(shí)文件夾路徑。
你可以使用"N[MODE]/path"這樣模式定義該路徑(N是一個(gè)整數(shù))。
N表示使用N層深度的子目錄,而不是將所有數(shù)據(jù)文件都保存在一個(gè)目錄下。
[MODE]可選,必須使用8進(jìn)制數(shù),默認(rèn)600(=384),表示每個(gè)目錄下最多保存的會(huì)話文件數(shù)量。
這是一個(gè)提高大量會(huì)話性能的好主意。
注意0: "N[MODE]/path"兩邊的雙引號(hào)不能省略。
注意1: [MODE]并不會(huì)改寫(xiě)進(jìn)程的umask。
注意2: php不會(huì)自動(dòng)創(chuàng)建這些文件夾結(jié)構(gòu)。請(qǐng)使用ext/session目錄下的mod_files.sh腳本創(chuàng)建。
注意3: 如果該文件夾可以被不安全的用戶訪問(wèn)(比如默認(rèn)的"/tmp"),那么將會(huì)帶來(lái)安全漏洞。
注意4: 當(dāng)N>0時(shí)自動(dòng)垃圾回收將會(huì)失效,具體參見(jiàn)下面有關(guān)垃圾搜集的部分。

session.name = "PHPSESSID"
用在cookie里的會(huì)話ID標(biāo)識(shí)名,只能包含字母和數(shù)字。

session.auto_start = Off
在客戶訪問(wèn)任何頁(yè)面時(shí)都自動(dòng)初始化會(huì)話,默認(rèn)禁止。
因?yàn)轭?lèi)定義必須在會(huì)話啟動(dòng)之前被載入,所以若打開(kāi)這個(gè)選項(xiàng),你就不能在會(huì)話中存放對(duì)象。

分享:使用PHP獲取當(dāng)前url路徑的函數(shù)以及服務(wù)器變量
PHP獲取當(dāng)前url路徑的函數(shù)及服務(wù)器變量: 代碼: 復(fù)制代碼 代碼如下: ?php $path = /usr/opt/../ect/abcd; echo $_SERVER['DOCUMENT_ROOT'].br; //獲得服務(wù)器文檔根變量(取決于http.conf中的配置) echo $_SERVER['PHP_SELF'].br; //獲得執(zhí)行該代碼的文件的路徑,與http.

共2頁(yè)上一頁(yè)12下一頁(yè)
來(lái)源:模板無(wú)憂//所屬分類(lèi):PHP教程/更新時(shí)間:2013-07-01
相關(guān)PHP教程