PHP使用者指南-cookies部分
在這課教程我們將學習如何利用 PHP 處理cookies,我將試著使事情盡可能簡單地去解釋cookies的一些實際應用。
什麼是cookies及作用?
cookies是由web伺服器產生的並且存在客戶端的一些資訊。它嵌在html資訊中,由伺服器端指定,在客戶端及伺服器端間傳遞訊息
。它通常用來:使用者網頁個人化,計數器,儲存被瀏覽網站的資訊等。
cookies和php
在 PHP中用cookies是相當容易的。可以使用setcookie函數設定一個cookie。 cookie是 HTTP標頭的一部分, 因此設定cookie功能必須在任何內容送到瀏覽器之前。這種限制與header()函數一樣。任何從客戶端傳來的cookie都會自動地轉換成一個PHP變數。 PHP取得資訊頭並分析, 提取cookie名並變成變數。因此,如果你設定cookie如setcookie("mycookie","wang");php會自動產生一個名為$mycookie,值為"wang"的變數.
先讓我們複習一下setcookie函數語法:
setcookie(string CookieName, string CookieValue, int CookieExpireTime, path, domain, int secure);
PATH:表示web伺服器上的目錄,預設為被呼叫頁面所在目錄
DOMAIN:cookie:cookie:cookie可以使用的域名,預設為被調用頁面的域名。這個域名必須包含兩個".",所以如果你指定你的頂級域名,你必須用".mydomain.com"
SECURE:如果設為"1",表示cookie只能被用戶的瀏覽器認為是安全的伺服器所記住
應用:
對於一個需要註冊的站點,將自動識別用戶的身份,並發送給它訊息,如果是陌生人,將告訴他請先註冊。我們按下面給出的資訊建立一個小型資料庫:名字(first name),姓(last name),email地址(email address),計數器(visit counter).
按下面步驟建表:
mysql> create database users;
Query OK, 1 row affected (0.06 sec)
mysql> use usersers varchar(20), LastName varchar(40),
email varchar(40), count varchar(3));
Query OK, 0 rows affected (0.05 sec)
Query OK, 0 rows affected (0.05 sec)
Query OK, 0 rows affected (0.05 sec)
########################index.php ###################################
if (isset($Example)) { // Begin instructions for existing Cookie
$info = explode("&", $Example);
$FirstName=$info[0];
$LastName=$info[1]; =$info[2];
$count=$info[3];
$count ;
$CookieString=$FirstName.'&'.$LastName.'&'.$email .'&'.$count;
SetCookie ("Example",$CookieString, time() 3600); //設一新的cookie
echo"
echo"
wang example Hello $FirstName $LastName, this is your visit number: $count
email address is: $email
";
mysql_connect() or die ("Problem connecting to Data Data"); //update DB >$query = "update info set count=$count where FirstName='$FirstName' and
LastName='$LastName' and email='$email'";
$result = my_db_query("users", $query) or die ("Problems .... ");
} //End Existing cookie instructions
else { //Begin inctructions for no Cookie 🎜>cho >
Rafi's Cookie example } //End No Cookie instructions
?>
注意:如果你用的是一個遠端mysql伺服器或unix伺服器,你應用下面語句
mysql_connect ("server","username","password") or die ("Problem connecting to DataBase");
我們要檢查是否一個被指定名字的cookie在html頭部分傳送,記住,php能轉換可識別的cookie為對應的變量,所以我們能檢查一個名為"Example" 的變數:
if (isset($Example )) { //Begin instructions for existing Cookie
...
} else {
...
}
如果這個cookie存在,我們將計數器加一,並列印使用者資訊,如果這個cookie不存在,我們建議使用者先註冊
如果cookie存在,我們執行下面步驟:
if (isset($Example)) { //Begin instructions for existing Cookie
$info = explode("&", $Example); //split the string to variables
$FirstName=$info[0];
$LastName=$info[1];
$ee>$LastName=$info[1];
$eemail=$info>$email=$ [2];
$count=$info[3];
$count ;
$CookieString=$FirstName.'&'.$LastName.'&'.$email.'& '.$count;
SetCookie ("Example",$CookieString, time() 3600); //setting a new cookie
echo"
wang extitle>wang pample title>
Hello $FirstName $LastName, this is your visit number: $count
";
mysql_connect() 或 die ("Problem connecting to DataBase"); //update DB "update info set count=$count where FirstName='$FirstName' and
LastName='$LastName' and email='$email'";
$result = mysql_db_query("users", $query) oror die ("Problems .... ");
}//End Existing cookie instructions
上面的程式有3個主要部分:首先取得cookie值,用explode函數分成不同的變量,增加計數器,並設一新cookie.接著用html語句輸出使用者資訊。最後,用新的計數器值更新資料庫。
如果這個cookie不存,下面的程序將被執行:
else { //Begin inctructions for no Cookie
echo "
Rafi's Cookie example
Click Here for Site Registration
">Click Here for Site Registration ";
} //End No Cookie instructions
下面reg.php簡單列出到註冊頁面的連結
########## ###################reg.php############################ #
Registering the Site 🎜>Registering the site