《PHP教程:php session的應(yīng)用詳細(xì)介紹》要點(diǎn):
本文介紹了PHP教程:php session的應(yīng)用詳細(xì)介紹,希望對您有用。如果有疑問,可以聯(lián)系我們。
PHP學(xué)習(xí)php session高級應(yīng)用
PHP學(xué)習(xí)session在web技術(shù)中非常重要,由于網(wǎng)頁是一種無狀態(tài)的連接程序,因此無法得知用戶的瀏覽狀態(tài).通過session則可以記錄用戶的有關(guān)信息,以供用戶再次以此身份對web服務(wù)器提交要求時確認(rèn).
PHP學(xué)習(xí)例如:用戶在瀏覽電子商務(wù)網(wǎng)站的時候,如果沒有session,那么用戶每次瀏覽就需要輸入賬戶密碼.
PHP學(xué)習(xí)1,Session 臨時文件
PHP學(xué)習(xí)在服務(wù)器中,如果將用戶所有的Session都保存到臨時目錄中,會降低服務(wù)器的安全性和效率.打開服務(wù)器存儲的站點(diǎn)會非常的慢.
PHP學(xué)習(xí)使用PHP函數(shù)session_save_path()函數(shù)存儲Session臨時文件,可以緩解因臨時文件的存儲導(dǎo)致的服務(wù)器效率降低和站點(diǎn)打開緩慢的問題.
PHP學(xué)習(xí)示例代碼如下:
PHP學(xué)習(xí)
<?php
$path ="./tmp/"; //設(shè)置session存儲的路徑
session_save_path($path);
session_start();
$_SESSION['userName']=true;
?>
PHP學(xué)習(xí)注意
PHP學(xué)習(xí)session_save_path() 必須在session_start() 之前執(zhí)行.
PHP學(xué)習(xí)2,Session 緩存
PHP學(xué)習(xí)Session 緩存是將網(wǎng)頁中的內(nèi)容臨時存儲到IE客戶端的Temporary INternet Files文件夾,并且可以設(shè)置緩存的時間.
PHP學(xué)習(xí)Session的緩存使用的是 session_cache_limiter()函數(shù),其語法如下:
PHP學(xué)習(xí)
string session_cache_limiter([string cache_limiter]);
PHP學(xué)習(xí)其中參數(shù)cache_limiter 為public 或private .同事session不是在服務(wù)器端,而是在客戶端.在服務(wù)器中沒有顯示.
PHP學(xué)習(xí)緩存時間的設(shè)置,使用的是函數(shù) session_cache_expire()語法如下:
PHP學(xué)習(xí)
int session_cache_expire([int new_cahche_expire]);
PHP學(xué)習(xí)參數(shù)new_cahche_expire 是session緩存的時間數(shù)字,單位分鐘.
PHP學(xué)習(xí)注意:
PHP學(xué)習(xí)這兩個session函數(shù)必須在session_start()函數(shù)之前執(zhí)行
PHP學(xué)習(xí)session 緩存頁面的示例代碼如下:
PHP學(xué)習(xí)
<?php
session_cache_limiter("private");
$cache_limit =session_cache_limiter(); //開啟客戶端緩存
echo "緩存限制為:".$cache_limit."\n";
session_cache_expire(30);
$cache_expire = session_cache_expire(); //設(shè)定客戶端緩存時間
echo "客戶端緩存時間為:".$cache_expire."分鐘\n";
session_start();
?>
PHP學(xué)習(xí)運(yùn)行結(jié)果如下:
PHP學(xué)習(xí)
PHP學(xué)習(xí)3,Session數(shù)據(jù)庫存儲
PHP學(xué)習(xí)在php中Session 的數(shù)據(jù)庫存儲主要是通過 session_set_save_handler()函數(shù)來實(shí)現(xiàn)的. 具體語法如下:
bool session_set_save_handler(string open,string close,string read,string write,string destroy,string gc);
PHP學(xué)習(xí)
PHP學(xué)習(xí)下面分別將這6個參數(shù)(函數(shù))分裝起來,在學(xué)習(xí)完面向?qū)ο缶幊毯?大家會有一個更加清晰的認(rèn)識.
PHP學(xué)習(xí)(1) 封裝session_open()函數(shù),代碼如下:
PHP學(xué)習(xí)
function _session_open($save_path,$session_name){
global $handle;
$handle =mysql_connect('localhost','root','root')or die('數(shù)據(jù)庫連接失敗!');
mysql_select_db('db_database11',$handle)or die('數(shù)據(jù)庫不存在');
return(true);
}
PHP學(xué)習(xí)(2)封裝session_close()函數(shù),代碼如下:
PHP學(xué)習(xí)
function _session_close(){
global $handle;
mysql_close($handle);
return(true);
}
PHP學(xué)習(xí)(3) 封裝 session_read()函數(shù),在函數(shù)中設(shè)定當(dāng)前時間的UNIX時間戳,根據(jù)$key查找Session名片及內(nèi)容.代碼如下:
PHP學(xué)習(xí)
function _session_read($key){
golbal $handle; //全局變量$handle 連接數(shù)據(jù)庫
$time =time(); //設(shè)定當(dāng)前時間
$sql ="select session_data from tb_session where session_key = '$key' and session_time>'$time'";
$result =mysql_query($ssql,$handle);
$row =mysql_fetch_array($result);
if($row){
return($row['session_data']);
}else{
return(false);
}
}
PHP學(xué)習(xí)(4) 封裝session_write()函數(shù),函數(shù)設(shè)定Session的失效時間,查找到Session的名稱及內(nèi)容,如果查詢結(jié)果為空.則將頁面中Session根據(jù)session_id,session_name,失效時間,插入數(shù)據(jù)庫中.如果查詢結(jié)果不為空,則根據(jù) $key修改數(shù)據(jù)庫中Session存儲信息.代碼如下:
PHP學(xué)習(xí)
function _session_write($key,$data){
global $handle;
$time = 60*60;
$lapse_time =time()+$time; //得到UNIX時間戳
$sql = "select session_data from tb_session where session_key ='$key' and session_time>$lapse_time";
$result =mysql_query($sql,$handle);
if(mysql_num_rows($result)==0){ //沒有結(jié)果
$sql ="insert into tb_session values('$key','$data',$lapse_time)";
$result =mysql_query($sql,$handle);
}else{
$sql ="update tb_session set session_key='$key',session_data ='$data',session_time =$lapse_time where session_key ='$key'";
$result =mysql_query($sql,$handle);
}
return($result);
}
PHP學(xué)習(xí)(5) 封裝session_destroy(),根據(jù)$key刪除數(shù)據(jù)庫中的Sessin.代碼如下:
PHP學(xué)習(xí)
function _session_destroy(){
global $handle;
$sql ="delete from tb_session where session_key ='$key'";
$result =mysql_query($sql,$handle);
}
PHP學(xué)習(xí)(6)封裝session_gc(),根據(jù)Session的失效時間刪除過期的Session,示例代碼如下:
PHP學(xué)習(xí)
functin _session_gc($expiry_time){
global $handle;
$sql ="delete from tb_session where session_expiry_time<$expiry_time";
$result =mysql_query($sql,$handle);
return($result);
}
PHP學(xué)習(xí)具體的代碼運(yùn)行就不做了,等到學(xué)完面向?qū)ο蟮木幊痰臅r候給大家演示下哦.
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/1342.html