php session的應用詳解

墨辰丷
發布: 2023-03-27 20:02:02
原創
1888 人瀏覽過

php session的應用詳解

這篇文章主要介紹了php session的應用程式詳細介紹的相關資料,需要的朋友可以參考下

php session進階應用

session在web技術中非常重要,由於網頁是一種無狀態的連接程序,因此無法得知使用者的瀏覽狀態。透過session則可以記錄使用者的相關訊息,以供使用者再次以此身分對web伺服器提交要求時確認。

例如:使用者在瀏覽電子商務網站的時候,如果沒有session,那麼使用者每次瀏覽就需要輸入帳號密碼。

相關專題推薦php session (包含圖文、影片、案例)

1, Session 暫存檔案

在伺服器中,如果將使用者所有的​​Session都儲存到暫存目錄中,會降低伺服器的安全性和效率。打開伺服器儲存的網站會非常的慢。

使用PHP函數session_save_path()函數儲存Session暫存文件,可以緩解因暫存文件的儲存導致的伺服器效率降低和網站開啟緩慢的問題。

範例程式碼如下:

<?php
$path ="./tmp/";    //设置session存储的路径
session_save_path($path);
session_start();
$_SESSION[&#39;userName&#39;]=true;
?>
登入後複製

注意

session_save_path() 必須在session_start() 之前執行。

2,Session 快取

Session 快取是將網頁中的內容暫時儲存到IE客戶端的Temporary INternet Files資料夾,並且可以設定快取的時間。

Session的快取所使用的是 session_cache_limiter()函數,語法如下: 

string session_cache_limiter([string cache_limiter]);
登入後複製

其中參數cache_limiter 為public 或private 。同事session不是在伺服器端,而是在客戶端。在伺服器中沒有顯示。

快取時間的設置,使用的是函數 session_cache_expire()語法如下: 

int session_cache_expire([int new_cahche_expire]);
登入後複製

參數new_cahche_expire 是session快取的時間數字,單位分鐘。

注意:

這兩個session函數必須在session_start()函數之前執行

session 快取頁面的範例程式碼如下:

<?php

session_cache_limiter("private");
$cache_limit =session_cache_limiter();   //开启客户端缓存
echo "缓存限制为:".$cache_limit."\n";
session_cache_expire(30);
$cache_expire = session_cache_expire();  //设定客户端缓存时间
echo "客户端缓存时间为:".$cache_expire."分钟\n";
session_start();

?>
登入後複製

運行結果如下:

php session的應用詳解

#3,Session資料庫儲存



php session的應用詳解


##在php中Session 的資料庫儲存主要是透過session_set_save_handler()函數來實現的。具體語法如下:

bool session_set_save_handler(string open,string close,string read,string write,string destroy,string gc);




#####################################################################以下分別將這6個參數(函數)分裝起來,在學習完物件導向程式設計後,大家會有一個更清楚的認識。 #########(1) 封裝session_open()函數,程式碼如下:###
function _session_open($save_path,$session_name){
global $handle;
$handle =mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;root&#39;)or die(&#39;数据库连接失败!&#39;);
mysql_select_db(&#39;db_database11&#39;,$handle)or die(&#39;数据库不存在&#39;);
return(true);
}
登入後複製
###(2)封裝session_close()函數,程式碼如下:###
function _session_close(){
global $handle;
mysql_close($handle);
return(true);
}
登入後複製
###(3)封裝session_read()函數,在函數中設定目前時間的UNIX時間戳,依照$key找出Session名片及內容。程式碼如下:###
function _session_read($key){
golbal $handle;     //全局变量$handle 连接数据库
$time =time();     //设定当前时间
$sql ="select session_data from tb_session where session_key = &#39;$key&#39; and session_time>&#39;$time&#39;";
$result =mysql_query($ssql,$handle);
$row =mysql_fetch_array($result);
if($row){
return($row[&#39;session_data&#39;]);
}else{
return(false);
}
}
登入後複製
###(4) 封裝session_write()函數,函數設定Session的失效時間,查找到Session的名稱及內容,如果查詢結果為空。則將頁面中Session依session_id,session_name,失效時間,插入資料庫中。如果查詢結果不為空,則根據 $key修改資料庫中Session儲存資訊。程式碼如下:###
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 =&#39;$key&#39; and session_time>$lapse_time";
$result =mysql_query($sql,$handle);
if(mysql_num_rows($result)==0){  //没有结果
$sql ="insert into tb_session values(&#39;$key&#39;,&#39;$data&#39;,$lapse_time)";
$result =mysql_query($sql,$handle);
}else{
$sql ="update tb_session set session_key=&#39;$key&#39;,session_data =&#39;$data&#39;,session_time =$lapse_time where session_key =&#39;$key&#39;";
$result =mysql_query($sql,$handle);
}
return($result);
}
登入後複製
###(5) 封裝session_destroy(),依照$key刪除資料庫中的Sessin.程式碼如下:###
function _session_destroy(){
global $handle;
$sql ="delete from tb_session where session_key =&#39;$key&#39;";
$result =mysql_query($sql,$handle);
}
登入後複製
###(6)封裝session_gc(),依照Session的失效時間刪除過期的Session,範例程式碼如下:###
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及codeigniter使用###session###-cookie的方法詳解##############完美解決ajax存取遇到Session失效的問題###############PHPSession入庫/存入redis的方法詳解##########

以上是php session的應用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!