最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP中cookies使用指南

 更新時間:2007年03月16日 00:00:00   作者:  
綜述 
  Cookie是在HTTP協(xié)議下,服務器或腳本可以維護客戶工作站上信息的一種方式。Cookie是由Web服務器保存在用戶瀏覽器上的小文件,它可以包含有關(guān)用戶的信息(如身份識別號碼、密碼、用戶在Web站點購物的方式或用戶訪問該站點的次數(shù))。無論何時用戶鏈接到服務器,Web站點都可以訪問Cookie信息。 
  怎樣設(shè)置cookies? 
  在PHP中可以使用setcookie函數(shù)設(shè)置一個cookie。cookie是 HTTP標頭的一部分, 因此設(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服務器上的目錄,默認為被調(diào)用頁面所在目錄 
  DOMAIN:cookie可以使用的域名,默認為被調(diào)用頁面的域名。這個域名必須包含兩個".",所以如果你指定你的頂級域名,你必須用".mydomain.com" 
  SECURE:如果設(shè)為"1",表示cookie只能被用戶的瀏覽器認為是安全的服務器所記住. 
cookies使用舉例 
  假設(shè)我們有這樣一個需要注冊的站點,它自動識別用戶的身份并進行相關(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為相應的變量,所以我們能檢查一個名為"myCookies" 的變量: 
   ?。? if (isset($myCookies)) { // 如果Cookie已經(jīng)存在 
    ……
    } else { //如果Cookie不存在
    ……
    } 
    ?> 
  當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">
 ?。糹nput type="submit" value="注冊">
 ?。?form>  
  用戶在register.php注冊頁面填寫的信息提交給regOK.php:
  /* regOK.php */
  if ($FirstName and $LastName and $email) {
   ……//在數(shù)據(jù)庫查詢用戶是否存在
   }
  }else{
  ……//錯誤處理
  }  

 上面的程序流程如下: 
  首先檢查所有的信息是否按要求填寫,如果沒有,返回重新輸入 
  如果所有信息填好,首先,我們從數(shù)據(jù)庫中取回用戶登錄詳細資料 
    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ù)庫是否有這樣一個用戶,如果有,它指定舊的信息,并用當前的信息建一新的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ù)之前應該沒有任何數(shù)據(jù)輸出倒瀏覽器,否則將會出現(xiàn)錯誤。 
  如何實現(xiàn)跨域名Cookie? 
  從Cookie規(guī)范上說,一個cookie只能用于一個域名,因此,如果在瀏覽器中對一個域名設(shè)置了一個cookie,那么這個cookie對于其它的域名將無效。 
  下面我們來談一個跨域名cookie的實現(xiàn)方案: 
第一步:創(chuàng)建預置腳本 
  將下面的代碼加到預置腳本中(或出現(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']; 
    } 
    ?>  
  這個代碼運行之后,一個全局變量'sessionid'將可以用于腳本。它將保存用戶的cookie中的sessionid值,或者是通過GET請求發(fā)來的sessionid值。 
第二步:為所有的交叉域名引用使用變量 
  創(chuàng)建一個全局的配置文件,用于存放可以進行切換的域名的基本引用形式。例如,如果我們擁有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 
  為了實現(xiàn)上面的要求,簡單地配置兩個虛擬服務器,作為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ī)則實現(xiàn)了上面兩個URL重寫的要求。

相關(guān)文章

  • 3種方法輕松處理php開發(fā)中emoji表情的問題

    3種方法輕松處理php開發(fā)中emoji表情的問題

    移動設(shè)備經(jīng)常會發(fā)生用戶發(fā)送的內(nèi)容中包含emoji表情,未經(jīng)處理,在顯示時就是亂碼。所以本文介紹在PHP微信開發(fā)中涉及到emoji表情的幾種處理方法。
    2016-07-07
  • PHP+Swoole實現(xiàn)web版的shell客戶端詳解

    PHP+Swoole實現(xiàn)web版的shell客戶端詳解

    這篇文章主要為大家詳細介紹了如何利用PHP+Swoole實現(xiàn)web版的shell客戶端,文中的示例代碼講解詳細,感興趣的小伙伴可以嘗試一下
    2022-07-07
  • PHP @ at 記號的作用示例介紹

    PHP @ at 記號的作用示例介紹

    @符號一直不知道是什么意思,其實它是錯誤控制符,即即使出現(xiàn)錯誤,也無視出現(xiàn)的錯誤信息,繼續(xù)執(zhí)行下邊的代碼
    2014-10-10
  • PHP iconv 函數(shù)轉(zhuǎn)gb2312的bug解決方法

    PHP iconv 函數(shù)轉(zhuǎn)gb2312的bug解決方法

    之前寫過一篇解決xajax庫中文亂碼的問題,說到可以用 iconv( "UTF-8", "gb2312" , $FormValues['a']) 來轉(zhuǎn)換,最近發(fā)現(xiàn)更好的寫法應該是。
    2009-10-10
  • PHP實現(xiàn)的mongoDB數(shù)據(jù)庫操作類完整實例

    PHP實現(xiàn)的mongoDB數(shù)據(jù)庫操作類完整實例

    這篇文章主要介紹了PHP實現(xiàn)的mongoDB數(shù)據(jù)庫操作類,結(jié)合完整實例形式詳細分析了php基于單例模式針對mongoDB數(shù)據(jù)庫連接、增刪改查、統(tǒng)計等操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2018-04-04
  • PHP基于遞歸算法解決兔子生兔子問題

    PHP基于遞歸算法解決兔子生兔子問題

    這篇文章主要介紹了PHP基于遞歸算法解決兔子生兔子問題,結(jié)合實例形式分析了兔子生兔子問題的php面試題采用循環(huán)與遞歸兩種思路的解決方法,需要的朋友可以參考下
    2018-05-05
  • php進程daemon化的正確實現(xiàn)方法

    php進程daemon化的正確實現(xiàn)方法

    守護進程(Daemon)是運行在后臺的一種特殊進程。下面這篇文章主要給大家介紹了關(guān)于php進程daemon化的正確實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-09-09
  • php 實現(xiàn)賬號不能同時登陸的方法分析【當其它地方登陸時,當前賬號失效】

    php 實現(xiàn)賬號不能同時登陸的方法分析【當其它地方登陸時,當前賬號失效】

    這篇文章主要介紹了php 實現(xiàn)賬號不能同時登陸的方法,結(jié)合實例形式分析了PHP基于session實現(xiàn)當其它地方登陸時,當前賬號失效的相關(guān)操作技巧,需要的朋友可以參考下
    2020-03-03
  • php實現(xiàn)圖片上傳時添加文字和圖片水印技巧

    php實現(xiàn)圖片上傳時添加文字和圖片水印技巧

    這篇文章主要為大家詳細介紹了php實現(xiàn)圖片上傳時添加文字和圖片水印技巧,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • PHP Global定義全局變量使用說明

    PHP Global定義全局變量使用說明

    Global是php中一個比較特殊的命令,大家直接叫他超級全局變量了,下面我來介紹我今天在使用Global定義全局學習筆記了
    2013-08-08

最新評論

泉州市| 三穗县| 阳新县| 长乐市| 郴州市| 商南县| 平凉市| 延寿县| 高邑县| 沁源县| 星座| 甘孜| 涞源县| 嘉善县| 分宜县| 临邑县| 阿鲁科尔沁旗| 昌邑市| 南阳市| 上饶市| 柘荣县| 滦平县| 安平县| 安仁县| 临猗县| 应城市| 南康市| 中卫市| 仲巴县| 防城港市| 蒙阴县| 千阳县| 方城县| 酒泉市| 穆棱市| 尼玛县| 磐石市| 商丘市| 玉树县| 汶上县| 龙州县|