• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦>生活課堂>生活小常識>

    簡述cookie和session的區別

    時間: 岳彬1043 分享

      在學習計算機專業的時候,我們會遇到一些課程知識的問題,那么你知道cookie和session的區別?下面是學習啦小編為你整理的簡述cookie和session的區別,供大家閱覽!

      簡述cookie與session的區別

      COOKIE介紹

      cookie 常用于識別用戶。cookie 是服務器留在用戶計算機中的小文件。每當相同的計算機通過瀏覽器請求頁面時,它同時會發送 cookie。通過 PHP,您能夠創建并取回 cookie 的值。

      1、設置Cookie

      PHP用SetCookie函數來設置Cookie。

      SetCookie函數定義了一個Cookie,并且把它附加在HTTP頭的后面,SetCookie函數的原型如下:

      int SetCookie(string name, string value, int expire, string path, string domain, int secure);

      參數說明:cookie名稱,cookie值,過期時間(int),有效路徑,有限域名,https傳遞才有效

      注意:當前設置的Cookie不是立即生效的,而是要等到下一個頁面時才能看到.這是由于在設置的這個頁面里Cookie由服務器傳遞給客戶瀏覽器,在下一個頁面瀏覽器才能把Cookie從客戶的機器里取出傳回服務器的原因。

      使用例子:

      普通使用:

      setcookie('name','PHP');

      帶失效時間的:

      setcookie('name','PHP',time()+24*60*60);//1day

      Cookie是面向路徑的 ,默認存儲在當前文件下,如果沒有設置路徑,不同文件下的cookie默認保存在不同文件夾下,如圖:默認保存在mytest文件夾下

      2、接收和處理Cookie

      用戶端與服務端的web通信協議是http。而PHP通過http取得用戶數據慣用的三種方法分別是:POST方法、GET方法還有Cookie。而PHP默認傳遞方法正是Cookie,也是最佳方法。

      比如設置一個名為MyCookier的Cookie,PHP會自動從WEB服務器接收的HTTP頭里把它分析出來,并形成一個與普通變量一樣的變量,名為$myCookie,這個變量的值就是Cookie的值

      3,刪除Cookie

      要刪除一個已經存在的Cookie,有兩個辦法:

      一是調用只帶有name參數的SetCookie,那么名為這個name的Cookie將被從關系戶機上刪掉;例如:setcookie('name','');

      另一個辦法是設置Cookie的失效時間為time()或time()-1,那么這個Cookie在這個頁面的瀏覽完之后就被刪除了(其實是失效了)。 例如:setcookie('name','PHP淮北',time()-24*60*60);

      要注意的是,當一個Cookie被刪除時,它的值在當前頁在仍然有效的。

      使用Cookie的注意事項:

      首先是必須在HTML文件的內容輸出之前設置(Cookie是HTTP協議頭的一部分,用于瀏覽器和服務器之間傳遞信息,所以必須在任何屬于HTML文件本身的內容輸出之前調用Cookie函數。

      在PHP頁面可以先使用

      ob_start();//開啟

      code…..

      ob_end_flush(); //刷新緩存

      可以防止header提示錯誤);

      不同的瀏覽器對Cookie的處理機制不一樣

      cookie限制是在客戶端的。一個瀏覽器能創建的Cookie數量最多為30個,并且每個不能超過4KB,每個WEB站點能設置的Cookie總數不能超過20個。

      當前設置的Cookie不是立即生效的,而是要等到下一個頁面時才能看到

      Session介紹

      session機制是一種服務器端的機制,服務器使用一種類似于散列表的結構(也可能就是使用散列表)來保存信息,每一個網站訪客都會被分配給一個唯一的標志符,即會話ID,它的存放形式無非兩種:要么經過url傳遞,要么保存在客戶端的Cookies里.當然,你也可以將Session保存到數據庫里,這樣會更安全,但效率方面會有所下降.url方式傳遞安全性肯定太差,PHP的會話機制是通過設置Cookie,在Cookie中保存會話id(Session ID),在服務器端會生成session文件,與用戶進行關聯,Web應用程序存儲與這些Session相關的數據,并在各頁面間進行傳遞.

      PHP相關函數

      在PHP中有關Session的函數比較多,不過我們最常用到的也就這么幾個函數:

      session_start():啟用session機制,在需要用到session的程序文件的最開始調用它.

      session_register():注冊session變量

      session_unregister(): 刪除session變量(一個一個刪除)

      session_is_registered(): 判斷session變量是否注冊

      session_distroy(): 銷毀所有session變量(所有session變量銷毀,包括文件)

      需要注意下面幾個方面:

      1.函數session_start()必須在程序最開始執行,在其前面不能有任何輸出內容,否則

      就會出現“Warning:Cannot send session cookie - headers already

      sent"類似這樣的警告信息.

      2.函數session_register()用于注冊要保存在session中的相關變量,其用法如下:

      <?php

      $val = "session value";

      session_register("val");

      ?>

      val即為要注冊的session變量名,在注冊時一定不要加上"$"符號,只寫其變量名稱即可.

      3.函數session_unregister()與上面函數用法完全相同,但功能相反,上面函數是注冊

      session變量,而其則是刪除指定的session變量.

      4.函數session_is_registered()用于判斷session變量是否注冊.

      5.函數session_destroy()主要用于在系統注銷和退出時,銷毀所有的session變量,它沒有參數,直接調用即可。

      Session與PHP.ini的關系配置

      1,session.save_handler = file

      用于讀取/回寫session數據的方式,默認是files。它會讓PHP的session管理函數使用指定的文本文件存儲session數據

      2,session.save_path = “/xammp/temp/”

      指定保存session文件的目錄,可以指定到別的目錄,但是指定目錄必須要有httpd守護進程屬主(比如apache或www等)寫權限,否則無法回存session數據。它還可以寫成這樣session.save_path = “N;/path” 其中N是整數。這樣使得不是所有的session文件都保存在同一個目錄中,而是分散在不同目錄。這對于服務器處理大量session文件是很有幫助的。(注:目錄需要自己手工創建)

      3,session.auto_start = 0

      如果啟用該選項,用戶的每次請求都會初始化session。不推薦使用,最好通過session_start()顯示地初始化session。

      上圖:左側是保存在xammp/tmp/下的session文件,內容是PHP序列化的格式

      右側:第一行是echo serialize($_SESSION['name']);//序列化

      第二行是打印session值

      *****************其中文件名是session-name,內容是PHP序列化的格式

      cookie與session的區別和關系

      存儲位置:

      session存儲在服務器位置上,可以通過php.ini里面配置session相關配置

      cookie存儲在客戶端上的上(其實可以分兩種:

      1,持久性cookie,設置了cookie的時間,以文件方式存在硬盤上,

      2,會話cookie,沒有設置cookie時間,cookie的生命周期也就是關閉瀏覽器前就消失,一般不會保存在硬盤,而是保存在內存上)

      cookie和session的關系

      從上面的圖可以看到:

      cookie通過http報頭發送:

      Cookie name=PHP%BB%B4%B1%B1; PHPSESSID=cpt2ah3pi4cu7lo69nfbfllbo7

      其中PHPSESSID就是關聯服務器session的重要參數

      再看session文件:sess_cpt2ah3pi4cu7lo69nfbfllbo7

      session_id的生成格式就是:sess_加上一串PHPSESSID的值

      我們可以這樣理解:

      當程序需要為某個客戶端的請求創建一個session時,服務器首先檢查這個客戶端的請求里是否已包含了一個session標識 (稱為session id),如果已包含則說明以前已經為此客戶端創建過session,服務器就按照session id把這個session檢索出來 使用(檢索不到,會新建一個),如果客戶端請求不包含session id,則為此客戶端創建一個session并且生成一個與此session相 關聯的session id,session id的值應該是一個既不會重復,又不容易被找到規律以仿造的字符串,這個session id將被在本次響應 中返回給客戶端保存。保存這個session id的方式可以采用cookie,這樣在交互過程中瀏覽器可以自動的按照規則把這個標識發送給 服務器。一般這個cookie的名字都是類似于SEEESIONID

      php.ini里面關于session和cookie有關的配置

      1,session.use_cookie = 1

      是否采用Cookie方法傳遞session id值。默認是1,表示啟用。

      2,session.name = PHPSESSID

      不管是Cookie傳遞sessioin_id,還是GET方法傳遞session_id,都需要使用鍵值。他們的格式分別是Cookie: sess_name=session_id;和/path.php?sess_name=session_id,其中sess_name就是由這里指定的。

      3,session.use_only_cookies = 0

      表示只使用Cookie 的方法傳遞session id。我們說過,傳遞cookie的方法,除了cookie,還有GET方法,GET方法是不安全的方法。在用戶端禁用了cookie的時候,會采用GET方法傳遞session_id,可以通過這個設置盡用GET方法傳遞session_id。

      4,session.cookie_lifetime = 0, session.cookie_path = / 以及session.cookie_domain =

      如果使用Cookie方法傳遞session_id的話,這里分別指定了cookie有效域、目錄和時間。分別對應setcookie()函數的形參$expire、$path和$domain。其中cookie_lifetime=0表示直到關閉瀏覽器才刪除Cookie。還可以使用session_set_cookie_params()函數修改這些值。

      5,session_name([string $name])

      獲取或更新session_name。如果傳了name,則表示不使用默認的名稱PHPSESSID(由session.name)指定,否則獲取當前session_name。注意:如果設置session_name,則必須在session_start()之前調用才生效。

      6,session_id([string $id])

      與session_name()類似,但它是讀取或者設置session_id的方法。同樣,設置session_id的話,必須在session_start()之前調用才有效。

      7,session_set_cookie_params()和session_get_cookie_params()

      通過session_set_cookie_params()可以重新設定session.cookie_lifetime, session.cookie_path以及session.cookie_domain這三個php.ini設置。而session_get_cookie_params()則是獲取這些設定的值。

      總結:

      服務端session的相對于客戶端的cookie安全性要較高一點

      session在服務器集群的時候容易不同步,而cookie不會

      猜你喜歡:

    1.asp與jsp的區別

    2.Java Web工程師筆試題

    3.Java Web工程師筆試題

    4.2014年計算機二級《WEB》考點:HttpServetlResponse

    5.最新的搜狐前端面試題目整理

    6.JAVA面試題全集

    7.web前端工程師面試題及答案

    8.關于《網絡數據庫技術與應用》的介紹

    簡述cookie和session的區別

    在學習計算機專業的時候,我們會遇到一些課程知識的問題,那么你知道cookie和session的區別?下面是學習啦小編為你整理的簡述cookie和session的區別,供大家閱覽! 簡述cookie與session的區別 COOKIE介紹 cookie 常用于識別用戶。cookie
    推薦度:
    點擊下載文檔文檔為doc格式
    3199227 主站蜘蛛池模板: 天天爽亚洲中文字幕| 狠狠噜狠狠狠狠丁香五月 | 日本精品一区二区在线播放| 国产精品人成在线播放新网站| 亚洲欧美日韩中文字幕在线一区| caoporn国产精品免费| 男人和女人做爽爽视频| 天天视频一区二区三区| 偷自拍亚洲视频在线观看| a级片在线免费看| 淫444kkk| 国产精品素人福利| 亚洲免费网站观看视频| jizz18高清视频| 日韩电影在线观看视频| 国产人久久人人人人爽| 丰满大白屁股ass| 精品无码国产一区二区三区av | 久久婷婷五月综合97色一本一本| 麻豆一区区三三四区产品麻豆| 日本牲交大片免费观看| 国产一区亚洲欧美成人| 中文字幕无线码免费人妻| 精品国产一区二区三区久久| 女人zozozo与禽交| 亚洲熟妇色xxxxx欧美老妇| 18女人毛片大全| 晓青老师的丝袜系列| 国产亚洲福利精品一区二区| 中国一级特黄aa毛片大片| 疯狂做受xxxx高潮视频免费| 国产麻豆精品高清在线播放| 亚洲人成人77777网站| 饥渴艳妇小说官途欲妇| 成人午夜电影在线| 亚洲黄色片免费看| 最新jizz欧美| 日本高清va不卡视频在线观看| 吃奶呻吟打开双腿做受在线视频| ffee性xxⅹ另类老妇hd| 欧美大肚乱孕交hd|