亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 php教程 php手冊 PHP中cookies指南

PHP中cookies指南

Jun 21, 2016 am 09:14 AM
cookie http quot

cookie|cookies

綜述

Cookie是在HTTP協(xié)議下,服務(wù)器或腳本可以維護(hù)客戶工作站上信息的一種方式。Cookie是由Web服務(wù)器保存在用戶瀏覽器上的小文件,它可以包含有關(guān)用戶的信息(如身份識別號碼、密碼、用戶在Web站點(diǎn)購物的方式或用戶訪問該站點(diǎn)的次數(shù))。無論何時用戶鏈接到服務(wù)器,Web站點(diǎn)都可以訪問Cookie信息。

  怎樣設(shè)置cookies?

在PHP中可以使用setcookie函數(shù)設(shè)置一個cookie。cookie是 HTTP標(biāo)頭的一部分, 因此設(shè)置cookie功能必須在任何內(nèi)容送到瀏覽器之前。這種限制與header()函數(shù)一樣。任何從客戶端傳來的cookie將自動地轉(zhuǎn)化成一個PHP變量。PHP取得信息頭并分析, 提取cookie名并變成變量。因此,如果設(shè)置cookie如setcookie("mycookie","Cookies")php將自動產(chǎn)生一個名為$mycookie,值為"Cookies"的變量。

我們來看一下setcookie函數(shù)語法:

init setcookie(string CookieName,string CookieValue,int CookieExpireTime,path,domain,int secure);

參數(shù)說明:

PATH:表示web服務(wù)器上的目錄,默認(rèn)為被調(diào)用頁面所在目錄

DOMAIN:cookie可以使用的域名,默認(rèn)為被調(diào)用頁面的域名。這個域名必須包含兩個".",所以如果你指定你的頂級域名,你必須用".mydomain.com"

SECURE:如果設(shè)為"1",表示cookie只能被用戶的瀏覽器認(rèn)為是安全的服務(wù)器所記住.

cookies使用舉例

假設(shè)我們有這樣一個需要注冊的站點(diǎn),它自動識別用戶的身份并進(jìn)行相關(guān)的操作:如果是已經(jīng)注冊的用戶,發(fā)送給他信息;如果不是已經(jīng)注冊的用戶,則顯示一個注冊頁面的鏈接。

按照上面的要求,我們先創(chuàng)建數(shù)據(jù)庫用來保存注冊用戶的信息:名字(first name),姓(last name),Email地址(email address),計數(shù)器(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頁面對照數(shù)據(jù)庫檢查cookies。

由于php能轉(zhuǎn)換可識別的cookie為相應(yīng)的變量,所以我們能檢查一個名為"myCookies" 的變量:

<? if (isset($myCookies)) { // 如果Cookie已經(jīng)存在
……
} else { //如果Cookie不存在
……
}
?>

當(dāng)cookie存在時,我們執(zhí)行下面步驟:

首先取得cookie值,用explode函數(shù)分析成不同的變量,增加計數(shù)器,并設(shè)一個新cookie:

$info = explode("&", $myCookies);
……
$count++;
$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;
SetCookie ("myCookies",$CookieString, time()+3600); //設(shè)置cookie

接著用html語句輸出用戶信息。

最后,用新的計數(shù)器值更新數(shù)據(jù)庫。

如果這個cookie不存在,我們顯示一個注冊頁(register.php)的鏈接。

下面的register.php是用戶注冊頁面:

/* register.php */
<form method="post" action="regOK.php">
First Name:<input type="text" name="FirstName">
Last Name:<input type="text" name="LastName">
<input type="submit" value="注冊">
</form>

用戶在register.php注冊頁面填寫的信息提交給regOK.php:

/* regOK.php */
if ($FirstName and $LastName and $email) {
 ……//在數(shù)據(jù)庫查詢用戶是否存在
}
}else{
……//錯誤處理
}




上面的程序流程如下:

首先檢查所有的信息是否按要求填寫,如果沒有,返回重新輸入

如果所有信息填好,首先,我們從數(shù)據(jù)庫中取回用戶登錄詳細(xì)資料

mysql_connect() or die ("連接數(shù)據(jù)庫出現(xiàn)錯誤!");
$query="select * from info where FirstName='$FirstName' and LastName='$LastName' and email='$email'";
$result = mysql_db_query("users", $query);
$info=mysql_fetch_array($result);
$count=$info["count"];

檢查數(shù)據(jù)庫是否有這樣一個用戶,如果有,它指定舊的信息,并用當(dāng)前的信息建一新的cookie,如果同一用戶沒有數(shù)據(jù)庫登錄,新建一數(shù)據(jù)庫登錄,并建一新的cookie。

現(xiàn)在利用isset()函數(shù)檢查用戶是否有計數(shù)器,如果有則計數(shù)器增加并且建立一個新的cookie:

$count++; //增加計數(shù)器
$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;
SetCookie ("myCookies",$CookieString, time()+3600);

如果沒有一用戶計數(shù)器,在mysql中加一記錄,并設(shè)一cookie

注意:調(diào)用setcookie函數(shù)之前應(yīng)該沒有任何數(shù)據(jù)輸出倒瀏覽器,否則將會出現(xiàn)錯誤。

  如何實(shí)現(xiàn)跨域名Cookie?

  從Cookie規(guī)范上說,一個cookie只能用于一個域名,因此,如果在瀏覽器中對一個域名設(shè)置了一個cookie,那么這個cookie對于其它的域名將無效。

  下面我們來談一個跨域名cookie的實(shí)現(xiàn)方案:

第一步:創(chuàng)建預(yù)置腳本

  將下面的代碼加到預(yù)置腳本中(或出現(xiàn)在所有腳本之前的函數(shù)中)。

   ?。?php
    /*如果GET變量已經(jīng)設(shè)置了,并且它與cookie變量不同
     *則使用get變量(更新cookie)
     */
    global $HTTP_COOKIE_VARS, $HTTP_GET_VARS;
    if (isset($sessionid) && isset($HTTP_GET_VARS['sessionid']) && ($HTTP_COOKIE_VARS['sessionid'] != $HTTP_GET_VARS['sessionid'])) {
      SetCookie('sessionid', $HTTP_GET_VARS['sessionid'], 0, '/', '');
      $HTTP_COOKIE_VARS['sessionid'] = $HTTP_GET_VARS['sessionid'];
      $sessionid = $HTTP_GET_VARS['sessionid'];
    }
    ?>

這個代碼運(yùn)行之后,一個全局變量'sessionid'將可以用于腳本。它將保存用戶的cookie中的sessionid值,或者是通過GET請求發(fā)來的sessionid值。

第二步:為所有的交叉域名引用使用變量

  創(chuàng)建一個全局的配置文件,用于存放可以進(jìn)行切換的域名的基本引用形式。例如,如果我們擁有domain1.com和domain2.com,則如下設(shè)置:

    <?php
    $domains['domain1'] = "http://www.domain1.com/-$sessionid-";
    $domains['domain2'] = "http://www.domain2.com/-$sessionid-";
    ?>

  我們寫這樣一段代碼:

   ?。?php
    echo "Click <a href="", $domains['domain2'], "/contact/?email=yes">here</a> to contact us.";
    ?>

  上面的代碼將產(chǎn)生如下的輸出:

    Click <a >here</a> to contact us.

  在這里sessionid已經(jīng)被插入到URL中去了。

第三步:配置Apache

  現(xiàn)在,我們來配置Apache來重寫這個URL。

  我們需要將
    http://www.domain2.com/-66543afe6543asdf6asd-/contact/
  變成這樣:
    http://www.domain2.com/contact/?sessionid=66543afe6543asdf6asd
  并且這種url:
    http://www.domain2.com/-66543afe6543asdf6asd-/contact/?email=yes
  變成這樣:
    http://www.domain2.com/contact/?email=yes&sessionid=66543afe6543asdf6asd

  為了實(shí)現(xiàn)上面的要求,簡單地配置兩個虛擬服務(wù)器,作為domain1和domain2,如下操作:

   ?。糣irtualHost ipaddress>
    DocumentRoot /usr/local/www/domain1
    ServerName www.domain1.com
    RewriteEngine on
    RewriteRule ^/-(.*)-(.*?.*)$ $2&sessionid=$1 [L,R,QSA]
    RewriteRule ^/-(.*)-(.*)$ $2?sessionid=$1 [L,R,QSA]
    </VirtualHost>

   ?。糣irtualHost ipaddress>
    DocumentRoot /usr/local/www/domain2
    ServerName www.domain2.com
    RewriteEngine on
    RewriteRule ^/-(.*)-(.*?.*)$ $2&sessionid=$1 [L,R,QSA]
    RewriteRule ^/-(.*)-(.*)$ $2?sessionid=$1 [L,R,QSA]
   ?。?VirtualHost>

  這些重寫的規(guī)則實(shí)現(xiàn)了上面兩個URL重寫的要求。



本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
cookie存在哪裡 cookie存在哪裡 Dec 20, 2023 pm 03:07 PM

Cookie通常儲存在瀏覽器的Cookie資料夾中的,瀏覽器中的Cookie檔案通常以二進(jìn)位或SQLite格式存儲,如果直接開啟Cookie文件,可能會看到一些亂碼或無法讀取的內(nèi)容,因此最好使用瀏覽器提供的Cookie管理介面來檢視和管理Cookie。

電腦上的cookie在哪裡 電腦上的cookie在哪裡 Dec 22, 2023 pm 03:46 PM

電腦上的Cookie儲存在瀏覽器的特定位置,具體位置取決於使用的??瀏覽器和作業(yè)系統(tǒng):1、Google Chrome, 儲存在C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default \Cookies中等等。

瞭解網(wǎng)頁重定向的常見應(yīng)用場景並了解HTTP301狀態(tài)碼 瞭解網(wǎng)頁重定向的常見應(yīng)用場景並了解HTTP301狀態(tài)碼 Feb 18, 2024 pm 08:41 PM

掌握HTTP301狀態(tài)碼的意思:網(wǎng)頁重定向的常見應(yīng)用場景隨著網(wǎng)路的快速發(fā)展,人們對網(wǎng)頁互動的要求也越來越高。在網(wǎng)頁設(shè)計領(lǐng)域,網(wǎng)頁重定向是一種常見且重要的技術(shù),透過HTTP301狀態(tài)碼來實(shí)現(xiàn)。本文將探討HTTP301狀態(tài)碼的意義以及在網(wǎng)頁重新導(dǎo)向中的常見應(yīng)用場景。 HTTP301狀態(tài)碼是指永久重新導(dǎo)向(PermanentRedirect)。當(dāng)伺服器接收到客戶端發(fā)

HTTP 200 OK:了解成功回應(yīng)的意義與用途 HTTP 200 OK:了解成功回應(yīng)的意義與用途 Dec 26, 2023 am 10:25 AM

HTTP狀態(tài)碼200:探索成功回應(yīng)的意義與用途HTTP狀態(tài)碼是用來表示伺服器回應(yīng)狀態(tài)的數(shù)字代碼。其中,狀態(tài)碼200表示請求已成功被伺服器處理。本文將探討HTTP狀態(tài)碼200的具體意義與用途。首先,讓我們來了解HTTP狀態(tài)碼的分類。狀態(tài)碼分為五個類別,分別是1xx、2xx、3xx、4xx和5xx。其中,2xx表示成功的回應(yīng)。而200是2xx中最常見的狀態(tài)碼

手機(jī)cookie在哪裡 手機(jī)cookie在哪裡 Dec 22, 2023 pm 03:40 PM

手機(jī)上的Cookie儲存在行動裝置的瀏覽器應(yīng)用程式中:1、在iOS裝置上,Cookie儲存在Safari瀏覽器的Settings -> Safari -> Advanced -> Website Data中;2、在Android裝置上,Cookie儲存在Chrome瀏覽器的Settings -> Site settings -> Cookies中等等。

404錯誤的原因和解決方法的深入研究 404錯誤的原因和解決方法的深入研究 Feb 25, 2024 pm 12:21 PM

探究HTTP狀態(tài)碼404的原因與解決途徑引言:在瀏覽網(wǎng)頁的過程中,我們常會遇到HTTP狀態(tài)碼404。這個狀態(tài)碼表示伺服器未能找到請求的資源。在本文中,我們將探討HTTP狀態(tài)碼404的原因,並分享一些解決途徑。一、HTTP狀態(tài)碼404的原因:1.1資源不存在:最常見的原因就是請求的資源在伺服器上不存在。這可能是由於檔案被誤刪、命名錯誤、路徑錯誤等原因?qū)е隆?/p>

如何使用C++實(shí)作HTTP流傳輸? 如何使用C++實(shí)作HTTP流傳輸? May 31, 2024 am 11:06 AM

如何在C++中實(shí)現(xiàn)HTTP流傳輸?使用Boost.Asio和asiohttps客戶端程式庫建立SSL流套接字。連接到伺服器並發(fā)送HTTP請求。接收HTTP響應(yīng)頭並列印它們。接收HTTP回應(yīng)正文並列印它。

如何尋找瀏覽器中的cookie 如何尋找瀏覽器中的cookie Jan 19, 2024 am 09:46 AM

在日常使用電腦與網(wǎng)路的過程中,我們常接觸到cookie。 Cookie是一種小型的文字文件,它保存了我們在網(wǎng)站上的存取記錄、偏好設(shè)定和其他資訊。這些資訊可以被網(wǎng)站使用,以便更好地為我們提供服務(wù)。但是有時候,我們需要找出cookie的信息,來找到我們要的內(nèi)容。那我們該如何在瀏覽器中尋找cookie呢?首先,我們要先了解cookie的存在位置。在瀏覽器中

See all articles