首頁 > 後端開發 > php教程 > cookies可以刪除嗎 PHP中cookies使用指南

cookies可以刪除嗎 PHP中cookies使用指南

WBOY
發布: 2016-07-29 08:36:37
原創
1009 人瀏覽過

綜述 
  Cookie是在HTTP協定下,伺服器或腳本可以維護客戶工作站上資訊的一種方式。 Cookie是由網頁伺服器儲存在使用者瀏覽器上的小文件,它可以包含有關使用者的資訊(如身分識別號碼、密碼、使用者在網路網站購物的方式或使用者造訪網站的次數)。無論何時使用者連結到伺服器,Web網站都可以存取Cookie資訊。 
  怎樣設定cookies? 
  在PHP中可以使用setcookie函數來設定一個cookie。 cookie是 HTTP標頭的一部分, 因此設定cookie功能必須在任何內容送到瀏覽器之前。這種限制與header()函數一樣。任何從客戶端傳來的cookie都會自動地轉換成一個PHP變數。 PHP取得資訊頭並分析, 提取cookie名並變成變數。因此,如果設定cookie如setcookie("mycookie","Cookies")php將自動產生一個名為$mycookie,值為"Cookies"的變數。
  我們來看看setcookie函數語法: 
  init setcookie(string CookieName,string CookieValue,int CookieExpireTime,path,domain,目錄,預設為被呼叫頁面所在目錄 
  DOMAIN:cookie可以使用的網域名稱,預設為被呼叫頁面的網域名稱。這個網域必須包含兩個".",所以如果你指定你的頂級網域,你必須用".mydomain.com" 
  SECURE:如果設為"1",表示cookie只能被使用者的瀏覽器認為是安全的伺服器所記住. 
cookies使用舉例 
  假設我們有這樣一個需要註冊的站點,它自動識別用戶的身份並進行相關的操作:如果是已經註冊的用戶,發送給他信息;如果不是已經註冊的使用者,則顯示一個註冊頁面的連結。 
  依照上面的要求,我們先建立資料庫用來保存註冊使用者的資料:名字(first name),姓(last name),Email地址(email address),計數器(visit counter)。
  先依下列步驟建表: 
    mysql> create database users; 
   〠Query users; 
   〠Query OK, mysql> use users; 
    Database changed 
    mysql> create table info (FirstName varchar(20), LastName varchar(40), email varchar(40), count varchar(3)); 
  㠀 〠  然後建造一個php頁面對照資料庫檢查cookies。
  由於php能轉換可辨識的cookie為對應的變量,所以我們能檢查一個名為"myCookies" 的變數: 
    <? if (isset($myCookies))) 🎜>    ……
    } else { //如果Cookie不存在
    ……   當cookie存在時,我們執行下面步驟: 
  先取得cookie值,用explode函數分析成不同的變數,增加計數器,並設一個新cookie: 
    $info = explode("&", $myCookies);      SetCookie ("myCookies",$CookieString, time()+3600); 🎜>  接著用html語句輸出使用者資訊。 
  最後,用新的計數器值更新資料庫。 
  如果這個cookie不存在,我們顯示一個註冊頁(register.php)的連結。
  下面的register.php是使用者註冊頁: 
  /* register.php */
  <form method="post" action="reg ="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) {
   … …//在資料庫查詢使用者是否有
   }
  }else{
  …//錯誤處理
  } 依要求填寫,如果沒有,回傳重新輸入 
  如果所有資訊填好,首先,我們從資料庫取回使用者登入詳細資料 
    mysql_connect() or die ("連線資料庫出現錯誤! 🎜>    $query="select * from info where FirstName='$FirstName' and LastName='$LastName' and email='$email'"; , $query); 
    $info=mysql_fetch_array($result); 
    $count=$info["count"];  
  檢查數據庫是否有這樣一個用戶,如果有,它指定舊的信息,並用當前的信息建一新的cookie,如果同一使用者沒有資料庫登入,新建一資料庫登入,並建造新的cookie。
  現在利用isset()函數檢查使用者是否有計數器,如果有則計數器增加並且建立一個新的cookie: 
    $count++; //增加計數器
   $count++; //增加計數器
    C$ $LastName.'&'.$email.'&'.$count; 
    SetCookie ("myCookies",$CookieString, time()+3600);  
    〒中計數記錄,並設一cookie 
  注意:呼叫setcookie函數之前應該沒有任何資料輸出倒瀏覽器,否則將會出現錯誤。
  如何實現跨域名Cookie? 
  從Cookie規範上說,一個cookie只能用於一個域名,因此,如果在瀏覽器中對一個域名設置了一個cookie,那麼這個cookie對於其它的域名將無效。
  下面我們來談一個跨網域cookie的實作方案: 
第一步:建立預置腳本 
  將下面的程式碼加到預置腳本中(或出現在所有腳本之前的函式中) 。
    <?php 
    /*如果GET變數已經設定了,並且它與cookie變數不同 
        global $HTTP_COOKIE_VARS, $HTTP_GET_VARS ; 
    if (isset($sessionid) && isset($HTTP_GET_VARS['sessionid']) && ($HTTP_COOKIE_VARS['sessionid']) && ($HTTP_COOKIE_VARS['sessionid']) && ($HTTP_COOKIE_VARS['sessionid'] .)       $HTTP_COOKIE_VARS['session]$;  $sessionid = $HTTP_GET_VARS['sessionid ']; 
    } 
    ?>  
  這個程式碼運作之後,一個全域變數'sessionid'將可以用於腳本。它將保存使用者的cookie中的sessionid值,或是透過GET請求發送的sessionid值。 
第二步:為所有的交叉網域引用使用變數 
  建立一個全域的設定文件,用於存放可以進行切換的網域名稱的基本引用形式。例如,如果我們擁有domain1.com和domain2.com,則如下設定: 
    <?php 
    $domains['domain1'] = "http://www.do ; 
    $domains['domain2'] = "http://www.domain2.com/-$sessionid-"; 
    〞 <?php 
    echo "Click <a href="", $domains['domain2'], "/contact/?email=yes">here<〠)> 🎜>  上面的程式碼將產生以下的輸出: 
    Click <a href="http://www.domain2.com/-66543afe6543asdf6asd-/contact/?email=yes">here@ >  在這裡sessionid已經被插入到URL中去了。 
第三步:設定Apache 
  現在,我們來設定Apache來重寫這個URL。
  我們需要將
    http://www.domain2.com/-66543afe6543asdf6asd-/contact/ 
  遀變. 🎜>  且這種url: 
    http://www.domain2.com/-66543afe6543asdf6asd-/contact/?email=yes
   contact/?email=yes&sessi
  為了實現上面的要求,簡單地配置兩個虛擬服務器,作為domain1和domain2,如下操作:
    <VirtualHost ipaddress> 
    DocumentRoot /usr/local/www/domain1
    ServerName www.domain1.com 
    RewriteEngine on 
    > RewriteRule ^/-(.*)-(. *)$ $2?sessi
    </VirtualHost> 
    <VirtualHost dress>    ServerName www.domain2.com 
    RewriteEngine on 
    RewriteRule ^/-(.*)-(.*?.*)$ $2&sessi
    RewriteRule ^/-(.*)-(.*)$ $2?sessi
    〝/這些重病寫的規則實現了上面兩個URL重寫的要求。

以上就介紹了cookies可以刪除嗎 PHP中cookies使用指南,包含了cookies可以刪除嗎方面的內容,希望對PHP教學有興趣的朋友有幫助。


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