1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      PHP中session與cookie是什么-創(chuàng)新互聯(lián)

      這篇文章主要介紹PHP中session 與 cookie是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

      創(chuàng)新互聯(lián)建站主要從事網(wǎng)站設計制作、成都網(wǎng)站設計、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務坊子,10年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:13518219792

      session 與 cookie 是什么?

      session 與 cookie 屬于一種會話控制技術。常用在身份識別,登錄驗證,數(shù)據(jù)傳輸?shù)取Ee個例子,就像我們?nèi)コ匈I東西結賬的時候,我們要拿出我們的會員卡才會獲取優(yōu)惠。這時候,我們怎么識別這個會員卡真實有效的呢?當我們將會員號給到收銀員,收銀員根據(jù)我們提供的會員號,輸入到系統(tǒng)中,系統(tǒng)根據(jù)這個會員號去查詢,如果查詢到了就證明這個會員號是真實存在的。這里的會員號就好比 cookie 與 session. 會員系統(tǒng)就好比服務器端,收銀員就好比客戶端.

      為什么會用到 session 與 cookie 呢?

      根據(jù)上述的例子,我們知道 session 與 cookie 是可以干什么的了,那為什么必須用這個來實現(xiàn)呢?這里就有必要了解一下 http 應用傳輸協(xié)議的特點了。由于 http 協(xié)議是無狀態(tài)的,即瀏覽器去請求了一個網(wǎng)頁,這時候就是一個 http 請求,當服務端接收到請求之后,返回客戶端需要的數(shù)據(jù),在這過程中瀏覽器與服務器是建立了一個連接的。但是當服務端返回數(shù)據(jù),客戶端收到數(shù)據(jù)之后,他們的這種連接關系就斷開了。下次瀏覽器再去發(fā)送請求的時候,又是重新建立一個連接,這兩個鏈接沒有任何關系。試想一下,當我們登錄一個商場系統(tǒng)的時候,進入首頁做了登錄操作,但是我們下單或者加入購物車的時候,還需要登錄,每訪問一個頁面就要登錄,是不是很繁瑣同時也是很不科學的,萬一我們加入購物車的商品,我們點擊下單了,下單頁面要登錄而且還無法正確的反饋出你下單時的那些商品.

      Http 特點

      1.http 協(xié)議支持客戶端 / 服務端模式,也是一種請求 / 響應模式的協(xié)議。

      2. 無連接。所謂的無連接就是服務器收到了客戶端的請求之后,響應完成并收到客戶端的應答之后,即斷開連接。限制每次的連接只處理一次請求。從而節(jié)省傳輸時間。

      3. 無狀態(tài)。http 協(xié)議對事務的處理沒有記憶能力。也就意味著如果需要前面的信息,只能重傳,這無形之中增加數(shù)據(jù)的傳輸量。這種方式某種方面上講解放了服務器,但是卻不利于客戶端與服務器的連接。為了彌補這種不足,產(chǎn)生了兩項記錄 http 狀態(tài)的技術,一個叫做 Cookie, 一個叫做 Session,后面我們再細講它們。

      4. 簡單快捷:所謂的簡單快捷是指客戶端向服務器請求服務時,一般來說只需要傳輸請求方法和路徑,就能進行訪問

      5. 靈活:這里主要指的是客戶端可以通過 http 協(xié)議傳輸任意類型的數(shù)據(jù)。比如傳輸.jpg 文件、.ppt 文件等等,只需要設定 content-type 就可以進行傳輸。

      Cookie

      cookie 的基本概念

      cookie 是遠程瀏覽器存儲數(shù)據(jù)以此追蹤用戶和識別用戶的的機制,從實現(xiàn)來說,cookie 是存儲在客戶端上的一個數(shù)據(jù)片段。

      cookie 的運行原理與存儲機制

      . 運行原理

      1. 客戶端向服務端發(fā)起一個 http 請求.

      2. 服務端設置一個創(chuàng)建 cookie 的指令,響應給客戶端.

      3. 客戶端收到服務端響應的指令,根據(jù)指令在客戶端創(chuàng)建一個 cookie.

      4. 擋下一次請求時,客戶端攜帶這個 cookie 向服務端發(fā)送請求.

      . 存儲機制

      總的來說,cookie 在客戶端存儲的形式有三種,不同的瀏覽器的存儲機制不同,存的 cookie 也不同.

      1. 文件存儲。瀏覽器會針對不同的域,在磁盤的對應目錄創(chuàng)建一個單獨的文件,來存儲該域下面的 cookie 值.

      2. 內(nèi)存存儲。當瀏覽器關閉時,該 cookie 隨之消失。根據(jù)下面的創(chuàng)建語法,當我們未設置過期時間時則會出現(xiàn)這種情況.

      3.flash 存儲。這種存儲方式是永久存儲在磁盤中,即使通過瀏覽器刪除一些數(shù)據(jù)都是無法刪除該方式存儲的 cookie,如果需要刪除,可能通過磁盤的方式.

      cookie 的設置

      Bool setcookie(string $name[, string $values, $expire=0[,string $path[,string $domain[, bool $secure = false[, bool $httpOnly = false]]]]] );

      $name:cookie存儲的名稱,必填選項.

      $values:cookie存儲的值。這里需要注意的是,當把該值設置為false時,客戶端會嘗試刪除這個cookie值,因此在要將值這是為true或者false的時候,我們用另外的值來代替,例如true用1代替,false用0來代替.

      $expire:cookie的過期時間,秒為單位,當該值被設置時,定時刪除;當該值沒有設置時,該值是永久有效的.該值設置為小于當前時間時,會出發(fā)瀏覽器的刪除機制,會自動刪除cookie.

      $path:cookie有效的目錄,默認的目錄是"/",即表示當前的正個域名都生效.

      $domain:cookie的作用域名,默認的是當前域名有效,如果需要設置直接填寫生效的域名即可.需要注意的是IE瀏覽器有長度限制,當只有大于5的時候才會生效.

      $secure:cookie的加密處理,當設置為true的時候,需要使用HTTPS協(xié)議,才會生效.

      $httpOnly:決定cookie是否只使用http協(xié)議,當設置為1或者true,其他非http協(xié)議是無法操作cookie的。例如我們未設置的時候,我們JavaScript是可以對cookie進行設置的.這樣一定程度上保證了安全性.這種情況需考慮瀏覽器是否支持該配置項.

      . 設置 cookie 的函數(shù)還有 setrawcookie () 函數(shù),只不過該函數(shù)不會對值 進行 urlencode 序列號.

      . 有時候,我們可能遇到這種情況,我們在這個頁面設置了 cookie,但是去刷新頁面獲取 cookie,按理說是會獲取到 cookie 的,但實際情況是無法獲取到,這是由于 cookie 運行機制導致,PHP 創(chuàng)建了 cookie 這個指令,告訴瀏覽器,你需要執(zhí)行這個指令了,這時候瀏覽器才會去執(zhí)行這個指令,因此是無法獲取到 cookie 的.

      . 在設置 cookie 之前,不能有任何輸出.

      // 實現(xiàn)方式一
      setcookie($cookie,"hello,world!", 3600);
      // 實現(xiàn)方式二
      header("header("Set-Cookie: testcookie=中文; path=/; domain=.sunphp.org; expires=".gmstrftime("%A, %d-%b-%Y %H:%M:%S GMT",time()+9600));");
      // 兩則的作用是一樣的,setcookie是PHP內(nèi)置函數(shù),是對http協(xié)議的操作封裝。

      cookie 的獲取

      $_COOKIE['$cookeName'];

      cookie 的應用

      . 用戶身份識別

      . 數(shù)據(jù)傳輸

      . 登錄控制 (是否登錄、單點登錄)

      cookie 跨域設置

      我們都知道,在前端開發(fā)中時常會遇到 ajax 跨域問題,我們解決的方式有很多種,可以參考這篇文章傳送門 1,傳送門 2,cookie 跨域我們可以參考 p3p 傳輸協(xié)議傳送門

      cookie 使用的注意事項

      . 數(shù)量限制,客戶端對每一個 domian 下的 cookie 是有數(shù)量限制的,不是創(chuàng)建任意數(shù)量就行.

      . 安全性,根據(jù)上面的創(chuàng)建語法,我們可以得知,當我們未設置 $httpOnly 值得時候,非 http 協(xié)議是可以操作 cookie 的值的,例如 JavaScript 通過 cookie ($cookieName). 而且一些抓包工具也是可以抓取到 cookie 的,還有就是 cookie 存儲在客戶端的文件中,如果獲取到這個 cookie,也是可以對 cookie 做一些操作的。為了防止別人可以拷貝 cookie 文件,進行惡意操作,可以對 cookie 進行加密處理.

      數(shù)據(jù)傳輸:當 cookie 數(shù)量很多,數(shù)據(jù)很大的時候,其實對于帶寬是有消耗的。比較 http 傳輸都需要帶寬,當 http 傳輸?shù)臄?shù)據(jù)量大了,帶了的帶寬消耗就大.

      Session

      運行原理與存儲機制

      . 運行原理

      1. 客戶端向服務端發(fā)起請求,建立通信

      2. 服務端根據(jù)設置的 session 創(chuàng)建指令,在服務端創(chuàng)建一個編號為 sessionid 的文件,里面的值就是 session 具體的值 (組成部分 變量名 | 類型 : 長度:值).

      3. 服務端將創(chuàng)建好的 sessionid 編號響應給客戶端,客戶則將該編號存在 cookie 中 (一般我們在瀏覽器存儲的調(diào)試欄中會發(fā)現(xiàn) cookie 中有一個 PHPSESSID 的鍵,這就是 sessionid,當然這個名稱,我可以通過設置服務端是可以改變的).

      . 當下一次請求時,客戶端將這個 sessionid 攜帶在請求中,發(fā)送給服務端,服務端根據(jù)這個 sessionid 來做一些業(yè)務判斷.

      . 存儲機制

      1. 存儲方式.session 默認是文件存儲的。我們可以通過 php.ini 的配置來設置存儲驅(qū)動傳送門

      2. 生命周期。當我們未設置 session 的生命周期時,當瀏覽器關閉之后存儲在客戶端的 phpsessid 自動消失,因為它是存在內(nèi)存,下次建立連接的時候會重新創(chuàng)建一個 phpsessid. 之前的 session,PHP 會自動的根據(jù)垃圾回收機制自動刪除。這里我們可以根據(jù) session_set_cookie_params ($expire) 函數(shù)來設置一個生命周期;

      session 的設置

      session_start();
      $_SESSION = $values;

      . session_start () 設置之前,不能有任何輸出

      session 的獲取

      $_SESSION['values'];

      session 的刪除

      // 只是單純的給重新賦了一個空的值
      $_SESSION['values'] = '';
      // 該函數(shù)是清空所有的session,慎用!
      session_destroy();
      // 連values這個session鍵都會刪除
      unset($_SESSION['values']);

      session 的使用場景

      . 用戶身份識別

      . 數(shù)據(jù)傳輸

      . 登錄控制 (是否登錄、單點登錄)

      session 的注意事項

      . 安全性,sessionid 是按照一定的算法生成,要保證 session 的值唯一性和隨機性.

      . 客戶端禁用 cookie,根據(jù)上面 session 的運行原理可以得出,session 的存儲于傳送還是依賴于客戶端,因此當客戶端禁用 cookie 時,客戶端是無法保存 PHPSESSID 的,這時候可以通過 url 重寫或者表單來實現(xiàn) session 的傳輸.

      . 存儲優(yōu)化,按照上面的 session 創(chuàng)建,所有的 session 都會創(chuàng)建在一個目錄下面,同時有的無效 session 在垃圾回收機制時間內(nèi)還不會刪除,當一臺服務器配置的站點較多時,這時候會生成很多的 session 文件,導致我們讀取速度變慢,我們可以設置 session 的存儲目錄級別,save_path 函數(shù). 一般大型的項目 (如分布式的項目), 可以使用其他的存儲方式,如數(shù)據(jù)存儲,內(nèi)存存儲.

      session 與 cookie 的區(qū)別

      . session 存儲在服務端,cookie 存儲在客戶端.

      .cookie 的創(chuàng)建指令由服務端設置.

      .session 的 sessionid 需要客戶端存儲.

      cookie 與 session 的幾個誤區(qū)

      . 客戶端禁止 cookie,session 無法使用?

      使用url重寫或者表單提交可以實現(xiàn).

      .session 和 cookie 的安全性比較,session 存在客戶端安全更高?

      由于cookie是存在客戶端的,相對來說安全性是要低一些,不過在創(chuàng)建的時候可以設置$httpOnly值.

      由于cookie與session是相互關聯(lián)的,獲取到cookie一定程度上獲取到了session,同樣可以操作session.

      .cookie 與 session 是不是在瀏覽器關閉的時候會消失?

      這需要查看存儲機制了。cookie可以存文件,內(nèi)存,flash.存內(nèi)存當然瀏覽器關閉則消失了;session由于垃圾回收機制,當在垃圾回收機制內(nèi)是不會刪除的,除非你代碼中顯示的做了刪除操作.

      .cookie 是存儲在客戶端中,如何增加其安全性?

      我們可以在設置cookie的時候,增加一些特殊參數(shù),如客戶端信息ip、瀏覽器信息等.

      . 當 cookie 存在客戶端的文件中,是不是每個瀏覽器獲取到這個文件都可以進行操作?

      要看瀏覽器之間對cookie的管理機制是不是一樣.

      以上是PHP中session 與 cookie是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


      當前題目:PHP中session與cookie是什么-創(chuàng)新互聯(lián)
      網(wǎng)頁地址:http://www.ef60e0e.cn/article/codojh.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
        1. <ul id="0c1fb"></ul>

          <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
          <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

          阿尔山市| 临汾市| 合水县| 滦平县| 民县| 体育| 铁岭县| 蕉岭县| 深圳市| 铅山县| 上栗县| 沙洋县| 肇源县| 从江县| 浪卡子县| 新营市| 屏山县| 启东市| 郸城县| 前郭尔| 修武县| 利津县| 梨树县| 茌平县| 永胜县| 治县。| 建德市| 新竹县| 米泉市| 卢氏县| 怀远县| 峨眉山市| 黎平县| 都江堰市| 正蓝旗| 湖口县| 神池县| 丰台区| 云林县| 临沭县| 东阳市|