PHP使用者指南-cookies部分_PHP教程

WBOY
發布: 2016-07-21 16:02:07
原創
723 人瀏覽過

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>  <br>  <br>   

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

  

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


在所有的資訊提交後調用另一php檔案分析這些資訊
################################################################ #########reg1.php####################################
  
if ($FirstName and $LastName and $email)  
{  
mysql_connect() 或 die ("Problem connecting to DataBase"); FirstName='$FirstName' and  
LastName='$LastName' and email='$email'";  
$result = mysql_db_query("users", $query); mysql_fetch_array($result);  
$count=$r["count"];  

if (isset($count)) {  
$CookieString=$FirstName.'&'.$astName .'&'.$email.'&'.$count;  
SetCookie ("Example",$CookieString, time() 3600);  
echo "

user $FirstName $LastName already exists. Usingy exists. Usingy exists. the existing  
info.

";  
echo "

Back to Main Page";  
} else {  
$count = '1';  
$query = "insert into info values  
('$FirstName','$LastName','$email','$count')";  
$result = mysql_db_query("users", $query);  
$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;  
SetCookie ("Example",$ CookieString, time() 3600);  
echo "Thank you for registering.
";  
}  

} else { echo "Sorpry, some information is misse>. all  
the information"; }  
?>  
先檢查所有的資訊是否依要求填寫,如果沒有,回傳重新輸入
  
if ($FirstName and $LastName and $ email)  
{  
...  
} else { echo "Sorry, some information is missing. Please go back and add all  
the information";  
? >
如果所有資訊都填寫好,將執行下面:

mysql_connect() or die ("連接資料庫時出現問題");  
$query="從資訊中選擇*,其中FirstName ='$FirstName' 和  
LastName='$LastName' 和email='$email'";  
$result = mysql_db_query("users", $query);  
$ ($result);  
$count=$r["count"];  

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

使用者$FirstName $ LastName 已經存在。 {  
$count = '1'; //新訪客- 將計數器設為1。
$query = "插入資訊值  
('$FirstName','$LastName','$email','$count')";  
$result = mysql_db_query("users", $query );  
$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;  
SetCookie("範例",$CookieString, time() 3600);
echo "感謝您註冊。
";  
be程式做了幾件工作:它檢查資料庫是否有這樣一個使用者(如果沒有,那麼,這個cookie已被刪除),如果有,它指定舊的信息,並用當前的信息建一新的cookie,如果同一個用戶沒有資料庫登錄,新建一個資料庫登錄,並建立一個新的cookie。
首先,我們從資料庫取得回使用者登入詳細資料
mysql_connect() or die ("Problem Connection to DataBase");  
$query="從資訊中選擇*,其中FirstName='$ FirstName' 與  
LastName='$LastName' 與email='$email'";  
$result = mysql_db_query("users", $query);  
$r=mysql_fetch_array($query);  
$r=mysql_fetch_array($ 🎜>$count=$r["count"];

現在檢查該使用者是否有成員,利用isset()函數

if (isset($count)) {  
...  
} else {  
...  
}  
增加節點並新一個cookie
$count ; //增加計數器  
$Cookie
$count ; //增加計數器  
$CookieString=FirstName.' .$LastName.'&'.$email.'&'.$count;  
SetCookie("範例",$CookieString, time() 3600);  
echo "

使用者$FirstName $LastName 已存在。中新增一筆記錄,並設定一個cookie
注意:在任何時候,setcookie 將管道中的任何資料傳送到瀏覽器之前,否則會得到錯誤訊息

######## ############################################# ###
---提前翻譯,有不恰之處,請qianjinok@china.com-------




http://www.bkjia.com/PHPjc/316640.html

www.bkjia.com

http: //www.bkjia.com/PHPjc/316640.htmlTechArticlePHP 使用者指南-cookies 部分在本課教程中我們將學習如何利用PHP 處理cookie,我將嘗試使事情需要簡單地去解釋cookies的一些實際應用。什麼是c...

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