首頁 > 後端開發 > php教程 > PHP使用指南-cookies部分

PHP使用指南-cookies部分

WBOY
發布: 2016-08-08 09:34:03
原創
918 人瀏覽過

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可以使用的域名,預設為被調用頁面的域名。這個域名必須包含兩個".",所以如果你指定你的頂級域名,你必須用".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 users;  
Database changed  

mysql> create table info (FirstName varchar(20), LastName varchar(40),  
email varchar(40), count varchar(3));  
Query OK, 0 rows affected (0.05 sec)
  
好,現在有了符合要求的表,我們可以建造一個php頁面對照資料庫檢查cookies.

########################index.php###################################### ###########
if (isset($Example)) { //Begin instructions for existing Cookie  
$info = explode("&", $Example);  
$FirstName=$info[0];  
$LastName=$info[1];  
$email=$info[2];  
$count=$info[3];  
$count++;  

$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;  
SetCookie ("Example",$CookieString, time()+3600); //設一新的cookie  

echo"   

wang example  
  
  

Hello $FirstName $LastName, this is your visit number: $count

  

Your email address is: $email

  
  
";  

mysql_connect() or die ("PRoblem connecting to DataBase"); //update DB  
$query = "update info set count=$count where FirstName='$FirstName' and  
LastName='$LastName' and email='$email'";  
$result = mysql_db_query("users", $query) or die ("Problems .... ");  

} //End Existing cookie instructions  

else { //Begin inctructions for no Cookie  
echo "  
  
Rafi's Cookie example  
  
  
Click Here for Site Registration  
  
";  
} //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];  
$email=$info[2];  
$count=$info[3];  
$count++;  

$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;  
SetCookie ("Example",$CookieString, time()+3600); //setting a new cookie  

echo"   
wang example  
  
  

Hello $FirstName $LastName, this is your visit number: $count

  

Your email address is: $email

  
  
";  

mysql_connect() or die ("Problem connecting to DataBase"); //update DB  
$query = "update info set count=$count where FirstName='$FirstName' and  
LastName='$LastName' and email='$email'";  
$result = mysql_db_query("users", $query) or 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  
  
";  
} //End No Cookie instructions  

下面reg.php簡單列出到註冊頁面的連結
##############################reg.php################## ###########
  
   
  
Registering the Site  
  

  

Registering the site

  

  
  
  
  
  
  
User Name: maxlength=20>
Last Name: maxlength=40>
email addrress: maxlength=40>
  
  
  
  


在所有的資訊被提交後調用另一php檔案分析這些資訊
###############################reg1.php################# ###################
  
if ($FirstName and $LastName and $email)  
{  
mysql_connect() or die ("Problem connecting to DataBase");  
$query="select * from info where FirstName='$FirstName' and  
LastName='$LastName' and email='$email'";  
$result = mysql_db_query("users", $query);  

$r=mysql_fetch_array($result);  
$count=$r["count"];  

if (isset($count)) {  
$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;  
SetCookie("範例",$CookieString, time()+3600);  
echo "

使用者 $FirstName $LastName 已存在。使用現有的
資訊.

";  
echo "

回首頁";  
} 其他 {  
$計數 = '1';  
$query =「插入資訊值  
('$FirstName','$LastName','$email','$count')";  
$結果 = mysql_db_query("使用者", $query);  
$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;  
SetCookie("範例",$CookieString, time()+3600);  
echo "感謝您註冊。
";  
}  

} else { echo "抱歉,缺少一些資訊。請返回並添加全部
資訊”;}  
? >  
首先檢查所有的資訊是否按要求填寫,如果沒有,返回重新輸入
  
if ($FirstName 和 $LastName 和 $email)  
{  
...  
} else { echo "抱歉,缺少一些資訊。請返回並添加全部
資訊”;}  
? >
如果所有資訊都填寫好,將執行下面:
  
mysql_connect() 或 die (「連接資料庫時出現問題」);  
$query="select * from info where FirstName='$FirstName' 和  
LastName='$LastName' 和 email='$email'";  
$結果 = mysql_db_query("用戶", $query);  

$r=mysql_fetch_array($結果);  
$count=$r["計數"];  

if (isset($count)) {  
$計數++;  
$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;  
SetCookie("範例",$CookieString, time()+3600);  
echo "

使用者 $FirstName $LastName 已存在。使用現有的
資訊.

";  
echo "

回首頁";  
} 其他 {  
$計數 = '1'; //新訪客 - 將計數器設為 1。  
$query =「插入資訊值  
('$FirstName','$LastName','$email','$count')";  
$結果 = mysql_db_query("用戶", $query);  
$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;  
SetCookie("範例",$CookieString, time()+3600);  
echo "感謝您註冊。
";  
也許程式做了幾件工作:它檢查資料庫中是否有這樣一個用戶(如果沒有,則該cookie已被刪除),如果有,它指定舊的信息,並用當前的信息構建一個新的cookie ,如果同一個用戶沒有資料庫登錄,新建一個資料庫登錄,並且建立一個新的cookie。
首先,我們從資料庫取回使用者登入的詳細資料
mysql_connect() 或 die (「連接資料庫時出現問題」);  
$query="select * from info where FirstName='$FirstName' 和  
LastName='$LastName' 和 email='$email'";  
$結果 = mysql_db_query("使用者", $query);  
$r=mysql_fetch_array($結果);  
$count=$r["計數"];

現在檢查該使用者是否有成員,利用isset()函數
  
if (isset($count)) {  
...  
} 其他 {  
...  
}  
增加投票並建立一個 cookie
$計數++; //增加計數器  
$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;  
SetCookie("範例",$CookieString, time()+3600);  
echo "

使用者 $FirstName $LastName 已存在。使用現有資訊。

";  
echo "

返回首頁";
如果沒有一個使用者投票,在mysql中加一筆記錄,並設定一個cookie
注意:在任何時候,setcookie 將管道中的任何資料傳輸到瀏覽器之前,否則會得到錯誤訊息

以上就介紹了PHP使用指南-cookies部分,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板