PHP中使用cookie和session

來源:互聯網
上載者:User

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);?>

具體怎麼用就不用解釋了吧

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.