cookie和session不管在java還是php中用的是比較多的,cookie可以看做是用戶端技術,session則是服務端技術。像購物車還有網站自動登入都可以用cookie實現,session則比較偏向驗證這一塊,相比cookie安全性更高,因為session是儲存在服務端的,不能隨意刪除或修改。下面來簡單的分享下我的學習心得
1.cookie的使用
如果需要儲存cookie可以直接在php頁面直接使用setCookie函數來儲存cookie使用方法如下
<?php setCookie("username","123456",time()+120);?>
第一個參數是cookie的鍵,第二個則是value,第三個表示該cookie什麼時候到期單位是秒,time()表示目前時間。這句代碼的意思是該cookie在2分鐘會到期
更新cookie的方法也是一樣。如果是Firefox瀏覽器我們可以看到cookie如下
下面來刪除cookie
setCookie($cookiename, '');或者 setCookie($cookiename, NULL);這兩種方法都能刪除cookie
至於要取得cookie就更簡單了,使用$_COOKIE就能取得,大量操作cookie也可以通過這個預定義超全域數組
2.session的使用
(1)啟用session
(2)把對象放入session中
session_start(); $_SESSION["password"]="123456";
兩句話就可以把sessiona儲存起來了,就像下面這樣
要取出session也是使用$_SESSION取得,刪除單個session可以使用unset($_SESSION["password"]),如果是刪除全部可以使用session_destroy();
session的真正原理不是那麼好理解,要理解的深入也很難,需要深入的話可以使用firebug查看http的請求和響應。當伺服器建立好session之後,會給用戶端瀏覽器返回一個
PHPSESID,這個ID就是會話唯一ID.當下次瀏覽器用戶端要取session就會通過這個唯一ID去伺服器端取出session資訊。如果用戶端把cookie禁用了,按照正常的代碼,session就不能共用了。這裡提供最簡單的兩種做法
第一種就是URL重寫,先判斷是否有PHPSESSID如果有則設定session_id(SID的值);
第二種就是修改php.ini裡的session.use_trans_sid把值設為1
對於第一種PHP提供了一個常量叫SID可以直接拿來使用,因為這種情況比較極端平時基本上不會遇到。具體的代碼就不寫了。有需要可以給我寫評論,我直接給發過去。
要注意的是php的session也可以存對象,要注意的就是使用前最好把這個對象用require_once引入就好使了
最後針對session的應用,我在網上找了一個特別簡單的驗證碼,代碼如下
<?php session_start(); Header("Content-type: image/PNG"); $im = imagecreate(44,18); $back = ImageColorAllocate($im, 245,245,245); imagefill($im,0,0,$back); $vcodes = ""; srand((double)microtime()*1000000); for($i=0;$i<4;$i++){ $font = ImageColorAllocate($im, rand(100,255),rand(0,100),rand(100,255)); $authnum=rand(1,9); $vcodes.=$authnum; imagestring($im, 5, 2+$i*10, 1, $authnum, $font); } $_SESSION['VCODE'] = $vcodes; for($i=0;$i<100;$i++) { $randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255)); imagesetpixel($im, rand()%70 , rand()%30 , $randcolor); } ImagePNG($im); ImageDestroy($im);?>
具體怎麼用就不用解釋了吧