第一個檔案:a.php <html><body> <a href='b.php'>記錄cookie值: 連到b.php</a><br> <a href='c.php'>顯示cookie值: 連到c.php</a><br> <a href='d.php'>清除cookie值: 連到d.php</a><br> </body></html> |
第二個檔案:b.php <?php setcookie("UserAcc", "Dana"); setcookie("UserName", "牛牛"); setcookie("UserPass", "1234", time()+60*60*24*1); ?> 設定完成 |
第三個檔案:c.php <?php echo "你的帳號是:".$UserAcc."<br>"; echo "你的名字是:".$UserName."<br>"; echo "你的密碼是:".$HTTP_COOKIE_VARS["UserPass"]."<br>"; if (isset($UserPass)) echo "密碼雜湊是:".md5($UserPass); ?> |
第四個檔案:d.php <?php setcookie("UserAcc", "", time()); setcookie("UserName", "", time()); setcookie("UserPass", "", time()); ?> 清除完成 |
先執行a.php(結果如下),再點擊畫面上的各個連結(b.php或c.php或d.php),看看會有什麼結果? 記錄cookie值: 連到b.php 顯示cookie值: 連到c.php 清除cookie值: 連到d.php |
函式:
- setcookie("變數名稱", "變數值");
- setcookie("變數名稱", "變數值", 有效時間#);
- time()
時間函式,目前的時間。求得第幾天的格式為:秒*分*時*第幾天,所以三十天後的時間就是 time()+60*60*24*30
- md5("要雜湊的字串");
|
說明:
- 設定setcookie()前,不可以輸出任何空白、字串、數字、HTML語法等,否則會造成程式錯誤,而且無法設定Cookie!
- 設定setcookie()後,變數要執行下一個程式才會有結果;試著加a.php加上echo $UserAcc,結果是失敗的。
- 清除cookie()的作法,就是把cookie值的有效時間設定在今天以前,那個cookie值就會無效。
- $HTTP_COOKIE_VARS["變數名稱"] 效果與 $變數名稱 一樣,不過很顯然這樣比較明確,可讀性比較高。
有時可能因為PHP版本不同,而必須使用這樣的方式。
- Cookie變數的規則與一般變數相同,錢字號($)開頭,字首為字母,可以數字、字母或底線(_)
- md5()是一種字串雜湊函式,讓明碼變雜湊雜,可以用來保護密碼。
- 配合HTML的FORM,讓使用者從網頁可輸入帳號及密碼,再用setcookie()記錄起來,之後使用者在瀏覽其他網頁時,就可以不用再輸入帳號及密碼了。
|
除錯: Warning: Cannot add header information - headers already sent by (output started at a.php:2) in a.php on line 3 在a.php檔案裡,在第三行的setcookie()之前,已經輸出了其他字元! 請檢查a.php檔,絕不可在setcookie()之前輸出任何空白、字串、數字,或是有HTML語法等。 |
其他設定cookie的方式: <?php Header("set-cookie: UserAcc=dana; path=/;"); setcookie("UserName", "牛牛"); ?> <html> <head> <meta http-equiv='set-cookie' content='UserPass=1234'> </head> </body> </html> |