淺析PHP中cookie與session技術

來源:互聯網
上載者:User

標籤:變數   iss   word   儲存   映射   art   安全性   http   pass   

1.cookie是什嗎?

cookie指某些網站為了辨別使用者身份、進行session跟蹤而儲存在使用者本地終端上的資料(通常經過加密)。

通俗來理解就是,你去一個專賣店或者超市買東西,然後店裡給你辦一張會員卡,以後你的身份和購買資訊都存在這個卡裡。而這個卡放你身上。之後每次去買東西的時候僅僅須要刷卡就能夠了。不用再登記或者記錄其它的資訊。

然後將這段話映射了web上,超市結賬台就是server端,而你自己就是client,你身上所帶的卡也就是存在client中的cookie檔案。裡面記錄了你的帳號password等資訊。


只是要注意的一點,cookie在第二次使用的時候才可以生效。也就是說你在超市第一次買東西。人家會給你辦卡,你以後來買就行刷卡了。可是第一次買之前,超市並沒有你的不論什麼資訊,所以你第一次根本就沒有卡。

網站也一樣,第一次登入某網站,當然要輸入帳號password等資訊,然後才幹產生cookie存在本地,以便下一次使用。

同一時候,cookie也有自己的有效期間,過了期以後就失效了。本地的cookie檔案會被自己主動刪除。須要再次登入,輸入帳號password,然後產生新的cookie。這樣做的主要目的還是為了安全考慮。

2.cookie機製圖解。

3.cookie用法。

(1)設定cookie

bool setcookie ( string $name,$value,$expire,$path,$domain,$secure,$httponly  
比如:

setcookie("username","user",0,"/");setcookie("username","user",time()+60*60,"/");

每一個參數的使用方法就不作說明了。

這裡重點解析一下上面兩中設定cookie方式中的時間和路徑。

第一個其中的時間放了個0進去。難道代表存留時間為0.明顯不可能。它有著特殊的意義,表示cookie的有效期間隨著瀏覽器的關閉而結束。

他們的路徑中都放了個"/"。

這個就代表在這個網域名稱下的全部contentpath都能夠訪問cookie,也就是說這個網站下的全部頁面都能夠追蹤這個cookie。

(2)刪除cookie

setcookie("username","",time()-3600,"/");
和設定cookie一個東西,就是沒有了cookie的值,時間比目前時間還早。然後不就到期了。

(3)查看cookie

print_r($_COOKIE);
這傢伙大家肯定都懂。就當浪費一下眼神。

----------------------------------------------------------------------------------

-----------------------------我是切割線-------------------------------------------

----------------------------------------------------------------------------------

1.session是什嗎?

Session是指一個終端使用者與互動系統進行通訊的時間間隔,通常指從注冊進入系統到登出退出系統之間所經過的時間。

session的工作原理(摘於百度)(1)當一個session第一次被啟用時,一個唯一的標識被儲存於本地的cookie中。

(2)首先使用session_start()函數,PHP從session倉庫中載入已經儲存的session變數。(3)當運行PHP指令碼時。通過使用session_register()函數注冊session變數。

(4)當PHP指令碼運行結束時。未被銷毀的session變數會被自己主動儲存在本地一定路徑下的session庫中,這個路徑能夠通過php.ini檔案裡的session.save_path指定。下次瀏覽網頁時能夠載入使用。
事實上通俗來講的話,就是你去超市買東西。辦的會員卡記錄了你的資訊。可是會員卡並非儲存在你這裡,而是已資料的方式存在超市的系統中,一旦注冊之後能夠直接使用。你須要的時候,直接能夠使用。可是你一旦離開超市,那個會員卡也就失去了效用直到你的下一次購買。同一時候。這個會員卡的唯一標識也就是你自己,其它不論什麼人都沒有辦法使用你的會員卡。直接對號入座就非常好理解了。


session和cookie的一大不同點就是,session注冊之後直接使用,也就是第一次購買就能夠使用,而cookie是經過第一次購買之後才將資訊存入會員卡。然後第二次開始使用。

2.session機製圖解。

3.session用法。

(1)設定session

session_start();

$_SESSION[‘username‘]="user";

每一次在使用session之前都須要進行開啟session,就當是通常進門都先須要開門一樣。而在設定session時和對變數進行賦值沒有多大的差別,事實上$_SESSION本身就是一個變數。

(2)刪除session

這個相對步驟就多了點,而不是cookie裡面一句話搞定。

//開啟sessionsession_start();//登出sessionsession_unset();//銷毀sessionsession_destroy();//同一時候銷毀本地cookie中的sessionidsetcookie(session_name(),"",time()-3600,"/");
(3)查看session

print_r($_SESSION);

1.cookie與session優缺點。

cookie本身是存放在client中。僅佔用幾kb的記憶體大小。每次登入網站的時候都會帶上本地的cookie進行驗證,省去了麻煩的反覆輸入。可是安全性不是非常高,畢竟是存放在本地的檔案。儘管都是進行加密了的,一旦電腦資料被盜取,cookie就非常有可能會被擷取。

session存放在server中,佔中記憶體雖小,可是使用者基數夠大的情況下,會對server造成非常大的負荷。可是,資料放在server上,總歸風險減少了很多。

雖說沒有不透風的牆,只是風也是能夠非常小非常小的。這比喻。。

有同學可能疑問,session使用時。會有sessionid存在本地,一旦擷取是否能登入。答案當然是否定的,由於每次的id都是不一樣的。

淺析PHP中cookie與session技術

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.