国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php session的應用詳細介紹

2024-05-04 23:56:09
字體:
來源:轉載
供稿:網友

php/51474.html">php/18648.html">php session高級應用

session在web技術中非常重要,由于網頁是一種無狀態的連接程序,因此無法得知用戶的瀏覽狀態。通過session則可以記錄用戶的有關信息,以供用戶再次以此身份對web服務器提交要求時確認。

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

1,Session 臨時文件

在服務器中,如果將用戶所有的Session都保存到臨時目錄中,會降低服務器的安全性和效率。打開服務器存儲的站點會非常的慢。

使用PHP函數session_save_path()函數存儲Session臨時文件,可以緩解因臨時文件的存儲導致的服務器效率降低和站點打開緩慢的問題。

示例代碼如下:

<?php$path ="./tmp/";    //設置session存儲的路徑session_save_path($path);session_start();$_SESSION['userName']=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 緩存頁面的示例代碼如下:

<?phpsession_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高級應用,session高級應用詳解,session

3,Session數據庫存儲

在php中Session 的數據庫存儲主要是通過 session_set_save_handler()函數來實現的。 具體語法如下:
bool session_set_save_handler(string open,string close,string read,string write,string destroy,string gc);

php,session高級應用,session高級應用詳解,session

下面分別將這6個參數(函數)分裝起來,在學習完面向對象編程后,大家會有一個更加清晰的認識。

(1) 封裝session_open()函數,代碼如下:

function _session_open($save_path,$session_name){global $handle;$handle =mysql_connect('localhost','root','root')or die('數據庫連接失敗!');mysql_select_db('db_database11',$handle)or die('數據庫不存在');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 = '$key' and session_time>'$time'";$result =mysql_query($ssql,$handle);$row =mysql_fetch_array($result);if($row){return($row['session_data']);}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 ='$key' and session_time>$lapse_time";$result =mysql_query($sql,$handle);if(mysql_num_rows($result)==0){  //沒有結果$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);}

(5) 封裝session_destroy(),根據$key刪除數據庫中的Sessin.代碼如下:

function _session_destroy(){global $handle;$sql ="delete from tb_session where session_key ='$key'";$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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 岑巩县| 洪雅县| 措美县| 宁远县| 丘北县| 平泉县| 灵宝市| 洪江市| 浮山县| 恩平市| 金寨县| 车险| 宜州市| 商都县| 若尔盖县| 航空| 辽宁省| 洞口县| 晋州市| 敦化市| 湄潭县| 宁强县| 秦皇岛市| 苍南县| 陈巴尔虎旗| 佛山市| 开阳县| 福鼎市| 澄江县| 马关县| 滨海县| 探索| 宾川县| 鲁山县| 平罗县| 建阳市| 淮北市| 平和县| 兴城市| 汉沽区| 抚宁县|