記錄帳號及密碼:使用 Cookie

第一個檔案: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
函式:
  1. setcookie("變數名稱", "變數值");
  2. setcookie("變數名稱", "變數值", 有效時間#);
  3. time()
    時間函式,目前的時間。求得第幾天的格式為:秒*分*時*第幾天,所以三十天後的時間就是 time()+60*60*24*30
  4. md5("要雜湊的字串");
說明:
  1. 設定setcookie()前,不可以輸出任何空白、字串、數字、HTML語法等,否則會造成程式錯誤,而且無法設定Cookie!
  2. 設定setcookie()後,變數要執行下一個程式才會有結果;試著加a.php加上echo $UserAcc,結果是失敗的。
  3. 清除cookie()的作法,就是把cookie值的有效時間設定在今天以前,那個cookie值就會無效。
  4. $HTTP_COOKIE_VARS["變數名稱"] 效果與 $變數名稱 一樣,不過很顯然這樣比較明確,可讀性比較高。
    有時可能因為PHP版本不同,而必須使用這樣的方式。
  5. Cookie變數的規則與一般變數相同,錢字號($)開頭,字首為字母,可以數字、字母或底線(_)
  6. md5()是一種字串雜湊函式,讓明碼變雜湊雜,可以用來保護密碼。
  7. 配合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>

作者:Dana, cowwu@ms15.hinet.net, 2001/01/10 (2004/03/12修改)
本文章公開於個人網站 http://www.dana.idv.tw
Home Copyright © Shu-Chen Wu