内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

如何理解PHP會話-創(chuàng)新互聯

本篇內容介紹了“如何理解PHP會話”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

成都創(chuàng)新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網站建設、網站設計、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的播州網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

1、導讀


從文題目看,<簡單PHP會話(Session)說明> 是已經圈定了本文的內容范圍,試圖闡明Session(文中對會話稱為Session) 在PHP語言中是如何實現以及使用的,重點在于基本理解后的使用。

文章思路是首先搞清楚session是什么東西,Session有什么用,Session使用的套路是什么,PHP中是如何使用的。


2、會話(Session)說明

開始前,首先推薦一本基礎理論書《HTTP權威指南》,是程序員基礎必備知識,作者有電子版,有需要的可以留言。


a. Session的由來

幾乎每個人都上網,數以億計的數據在網絡中相互傳輸,數據之所以能夠安全的傳輸,是基于HTTP協議的,很是耳熟能詳是吧。其實HTTP協議所干的事情就是提供完成你的網絡訪問一系列方法,雙方構建了一次訪問,原則上就是一個會話建立了。說一個例子:小明在瀏覽器中輸入https://www.baidu.com/(HTTPS是HTTP的加密版本,相比是增加了SSL加密層),這是小明對百度發(fā)起了一個請求,說:“我要看你的界面”,百度的服務器們收到信息,信息中包括了小名想干的事情,同時包括了小明的地址(否則百度不知道把內容給誰了),服務器核對信息OK,對小明這個請求進行備案,發(fā)送出小名想要的東西,一次完整的請求結束了。 這就是一次會話,會話的核心在于小明的信息備案(其實還涉及到TCP/IP的連接問題,這個與本文無關,忽略)。

其實與其說是構建了一個Session,倒不如說將一次訪問概括為一個Session。

b. Session能干什么用

從上面內容可以得到,每一個訪問都是一個會話,服務器都要備案信息,這是有開銷的,同時呢,也不大可能同一個人連續(xù)訪問十次二十次就構建保存十次二十次,一個是增加開銷,另一個是也比較蠢了。也就是說,一個人(確切說是同一個電腦和瀏覽器),在某個特定時間內,能夠復用一個Session的,為什么在特定時間內呢?因為Session是有默認的過期時間,過期后服務器就清理掉了(如果不這樣,你想想世界那么多人,來一個保留一個,太虧)。


ok,既然同一個人,多次訪問都是一個Session(不要懷疑服務器無法判別是同一個人,具體可以看上面推介的書),而且每次訪問的內容都是做備案的,那么也就是說,你Session周期內所有的行為服務器都是知道的,那么接下來重要的作用就來了,服務器通過對你的訪問請求分析,能夠獲知到這個特定用戶的行為偏好的,通過做一定的分析,能夠推送一些用戶喜歡關心的數據,廣告定向也就是這么來的。


當然可能還有其他的用戶,性能等等之類的,個人不是特別理解機理,這里就這樣。


3、PHP中Session的使用

通過上面的啰嗦,可以發(fā)現,Session這個概念其實是在服務器端發(fā)生的。PHP提供了一系列的配置、函數等,很好的實現Session功能。Session支持在 PHP 中是在并發(fā)訪問時由一個方法來保存某些數據.從而使你能夠構建更多的定制程序 從而提高你的 web 網站的吸引力. 一個訪問者訪問你的 web 網站將被分配一個的 id, 就是所謂的session id. 這個 id 可以存儲在用戶端的一個 cookie 中,也可以通過 URL 進行傳遞.會話支持允許你將請求中的數據保存在超全局數組$_SESSION中. 當一個訪問者訪問你的網站,PHP 將自動檢查(如果 session.auto_start 被設置為 1)或者在你要求下檢查(明確通過session_start()或者隱式通過session_register()) 當前session id 是否是先前發(fā)送的請求創(chuàng)建. 如果是這種情況, 那么先前保存的環(huán)境將被重建.

a. php中session基本用法

通過為每個獨立用戶分配的Session ID,可以實現針對不同用戶分別存儲數據的功能。 會話通常被用來在多個頁面請求之間保存及共享信息。 一般來說,Session ID 通過 cookie 的方式發(fā)送到瀏覽器,并且在服務器端也是通過會話 ID 來取回會話中的數據。 如果請求中不包含會話 ID 信息,那么 PHP 就會創(chuàng)建一個新的Session,并為新創(chuàng)建的Session分配新的 ID。

Session的工作流程很簡單。當開始一個Session時,PHP 會嘗試從請求中查找Session ID (通常通過Session cookie), 如果請求中不包含Session ID 信息,PHP 就會創(chuàng)建一個新的Session。 Session開始之后,PHP 就會將Session中的數據設置到 $_SESSION變量中。 當 PHP 停止的時候,它會自動讀取$_SESSION中的內容,并將其進行序列化, 然后發(fā)送給會話保存管理器器來進行保存。默認情況下,PHP 使用內置的文件Session保存管理器(files)來完成Session的保存。 也可以通過配置項session.save_handler(php.ini中配置項目)來修改所要采用的Session保存管理器。 對于文件Session保存管理器,Session會話數據保存到配置項session.save_path (php.ini中配置項目)所指定的位置。可以通過調用函數session_start來手動開始一個會話。 如果配置項session.auto_start 設置為1, 那么請求開始的時候,Session會自動開始。PHP 腳本執(zhí)行完畢之后,session會自動關閉。 同時,也可以通過調用函數session_wirte_close() 來手動關閉會話。

b. php中session信息在php.ini中配置

這部分內容放在這里說是因為,不說明前面問題,鬼知道php.ini中的配置是什么東西。 上面提到的session.save_handler和session.save_path,這兩個就是php.ini中的配置項目,這里面這塊不細說,因為php手冊實在是太詳細了。本文默認模式是files。

c. php中的session機制

session_start()是session機制的開始,session會判斷當前是否有$_COOKIE[session_name()];session_name()返回保存session_id的COOKIE鍵值,如果不存在會生成一個session_id,然后把生成的session_id作為COOKIE的值傳遞到客戶端.相當于執(zhí)行了下面COOKIE 操作。相反,如果存在session_id =$_COOKIE[session_name];然后去session.save_path指定的文件夾里去找名字為'SESS_'.session_id()的文件.讀取文件的內容反序列化,然后放到$_SESSION中。

在會話結束的時候,會執(zhí)行Session寫入操作或是手工執(zhí)行session_write_close()操作。

代碼里面銷毀Session一般有三個方法,  


1. setcookie(session_name(),session_id(),time() -8000000,..); //退出登錄前執(zhí)行

2. usset($_SESSION); //這會刪除所有的$_SESSION數據,刷新后,有COOKIE傳過來,但是沒有數據。

3. session_destroy(); //刪除$_SESSION 刪除session文件以及session_id

附錄,引用網絡上的一段代碼,作為結尾吧。


<span >  </span>//SESSION初始化的時候調用 
   function open($save_path, $session_name) 
   { 
    global $sess_save_path; 
    $sess_save_path=$save_path; 
    return(true); 
   } 
 
   //關閉的時候調用 
   function close() 
   { 
    return(true); 
   } 
 
   function read($id) 
   { 
    global $sess_save_path; 
    $sess_file="$sess_save_path/sess_$id"; 
    return (string) @file_get_contents($sess_file); 
   } 
   //腳本執(zhí)行結束之前,執(zhí)行寫入操作 
   function write($id,$sess_data) 
   { 
 
    global$sess_save_path; 
 
    $sess_file="$sess_save_path/sess_$id"; 
    if ($fp= @fopen($sess_file,"w")) { 
     $return=fwrite($fp,$sess_data); 
     fclose($fp); 
     return$return; 
    } else { 
     return(false); 
    } 
 
   } 
     
   function destroy($id) 
   { 
    global $sess_save_path; 
 
    $sess_file="$sess_save_path/sess_$id"; 
    return(@unlink($sess_file)); 
   } 
 
   function gc($maxlifetime) 
   { 
    global$sess_save_path; 
 
    foreach (glob("$sess_save_path/sess_*") as$filename) { 
     if (filemtime($filename) +$maxlifetime<time()) { 
      @unlink($filename); 
     } 
    } 
    return true; 
   }

“如何理解PHP會話”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯網站,小編將為大家輸出更多高質量的實用文章!

當前文章:如何理解PHP會話-創(chuàng)新互聯
URL標題:http://www.rwnh.cn/article44/csjcee.html

成都網站建設公司_創(chuàng)新互聯,為您提供靜態(tài)網站企業(yè)建站、電子商務、網站排名、搜索引擎優(yōu)化、Google

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

搜索引擎優(yōu)化
华宁县| 南川市| 若尔盖县| 新建县| 泽库县| 浦北县| 信阳市| 鲜城| 社旗县| 衢州市| 满城县| 静海县| 梓潼县| 陇南市| 时尚| 东台市| 晋江市| 东至县| 方正县| 会宁县| 得荣县| 南阳市| 德江县| 司法| 穆棱市| 博爱县| 泗阳县| 北海市| 郯城县| 宁都县| 临沭县| 登封市| 大新县| 鹤壁市| 佛学| 玛纳斯县| 福清市| 马关县| 永修县| 安溪县| 潼关县|