欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          php cookie(專題)

          本專題通過圖文、視頻的形式全面介紹了php cookie的由來,php cookie屬性有哪些,php cookie函數(shù)用法以及php cookie實際應(yīng)用實例,通俗易懂!歡迎php中文網(wǎng)的同學們學習!

          php cookie(專題)

          一:什么是 Cookie ?

          cookie 常用于識別用戶。

          cookie 是一種服務(wù)器留在用戶計算機上的小文件。

          每當同一臺計算機通過瀏覽器請求頁面時,這臺計算機將會發(fā)送 cookie。

          通過 PHP,您能夠創(chuàng)建并取回 cookie 的值。

          相關(guān)專題推薦:php session

          二:Cookie 的誕生

          由于HTTP協(xié)議是無狀態(tài)的,而服務(wù)器端的業(yè)務(wù)必須是要有狀態(tài)的。

          Cookie誕生的最初目的是為了存儲web中的狀態(tài)信息,以方便服務(wù)器端使用。

          比如判斷用戶是否是第一次訪問網(wǎng)站。目前最新的規(guī)范是RFC 6265,它是一個由瀏覽器服務(wù)器共同協(xié)作實現(xiàn)的規(guī)范。

          三:Cookie 的原理

          php cookie(專題)

          第一次訪問網(wǎng)站的時候,瀏覽器發(fā)出請求,服務(wù)器響應(yīng)請求后,會將cookie放入到響應(yīng)請求中,在瀏覽器第二次發(fā)請求的時候,會把cookie帶過去,服務(wù)端會辨別用戶身份,當然服務(wù)器也可以修改cookie內(nèi)容。

          四:Cookie 屬性

          Cookie是一段不超過4KB的小型文本數(shù)據(jù),由一個名稱(Name)、一個值(Value)和其它幾個用于控制Cookie有效期、安全性、使用范圍的可選屬性組成。

          php cookie(專題)

          Name 表示 Cookie 的名稱。
          Value

          表示 Cookie 的值。

          Domain

          指定了可以訪問該 Cookie 的 Web 站點或域。

          Cookie 機制并未遵循嚴格的同源策略,允許一個子域可以設(shè)置或獲取其父域的 Cookie。

          Path

          定義了Web站點上可以訪問該Cookie的目錄。

          Expires

          什么是有效期,就是圖中的Expires屬性,一般瀏覽器的cookie都是默認儲存的,當關(guān)閉瀏覽器結(jié)束這個會話的時候,這個cookie也就會被刪除。

          Secure

          指定是否使用HTTPS安全協(xié)議發(fā)送Cookie。

          使用HTTPS安全協(xié)議,可以保護Cookie在瀏覽器和Web服務(wù)器間的傳輸過程中不被竊取和篡改。該方法也可用于Web站點的身份鑒別,即在HTTPS的連接建立階段,瀏覽器會檢查Web網(wǎng)站的SSL證書的有效性。

          HttpOnly 用于防止客戶端腳本通過document.cookie屬性訪問Cookie,有助于保護Cookie不被跨站腳本攻擊竊取或篡改。

          五:PHP Cookie 函數(shù)

          1、setcookie — 發(fā)送 Cookie

          setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] ) : bool

          setcookie() 定義了 Cookie,會和剩下的 HTTP 頭一起發(fā)送給客戶端。

          和其他 HTTP 頭一樣,必須在腳本產(chǎn)生任意輸出之前發(fā)送 Cookie(由于協(xié)議的限制)。

          請在產(chǎn)生任何輸出之前(包括 <html> 和 <head> 或者空格)調(diào)用本函數(shù)。

          一旦設(shè)置 Cookie 后,下次打開頁面時可以使用 $_COOKIE 讀取。

          Cookie 值同樣也存在于 $_REQUEST。

          參數(shù)

          參數(shù) 描述
          name Cookie 名稱。
          value

          Cookie 值。 這個值儲存于用戶的電腦里,請勿儲存敏感信息。

          expire

          Cookie 的過期時間。

          這是個 Unix 時間戳,即 Unix 紀元以來的秒數(shù)。

          也就是說,基本可以用 time() 函數(shù)的結(jié)果加上希望過期的秒數(shù)。

          path

          Cookie 有效的服務(wù)器路徑。

          設(shè)置成 '/' 時,Cookie 對整個域名 domain 有效。

          如果設(shè)置成 '/foo/', Cookie 僅僅對 domain 中 /foo/ 目錄及其子目錄有效。

          默認值是設(shè)置 Cookie 時的當前目錄。

          domain

          Cookie 的有效域名/子域名。

          設(shè)置成子域名,會使 Cookie 對這個子域名和它的三級域名有效。

          要讓 Cookie 對整個域名有效,只要設(shè)置成域名就可以了。

          secure

          設(shè)置這個 Cookie 是否僅僅通過安全的 HTTPS 連接傳給客戶端。

          設(shè)置成 TRUE 時,只有安全連接存在時才會設(shè)置 Cookie。

          如果是在服務(wù)器端處理這個需求,程序員需要僅僅在安全連接上發(fā)送此類 Cookie 。

          httponly

          設(shè)置成 TRUE,Cookie 僅可通過 HTTP 協(xié)議訪問。

          這意思就是 Cookie 無法通過類似 JavaScript 這樣的腳本語言訪問。

          要有效減少 XSS 攻擊時的身份竊取行為,可建議用此設(shè)置,不過這個說法經(jīng)常有爭議。

          返回值

          如果在調(diào)用本函數(shù)以前就產(chǎn)生了輸出,setcookie() 會調(diào)用失敗并返回 FALSE。

          如果 setcookie() 成功運行,返回 TRUE。

          示例

          <?php $value = 'something from somewhere';  setcookie("TestCookie", $value); setcookie("TestCookie", $value, time()+3600);  /* 1 小時過期  */ setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1); ?>

          2、setrawcookie — 發(fā)送未經(jīng) URL 編碼的 cookie

          setrawcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] ) : bool

          setrawcookie() 和 setcookie() 非常相似,唯一不同之處是發(fā)送到瀏覽器的 cookie 值沒有自動經(jīng)過 URL 編碼(urlencode)。

          六:PHP Cookie 簡單示例

          1、基本操作

          <?php  //添加Cookie setcookie('username', 'phpcn', time() + 3600);  //獲取Cookie $username = $_COOKIE['username'];  //刪除Cookie setcookie('username', '', time() - 3600);  //修改Cookie setcookie('username', 'phpcn-updated', time() + 3600);  ?>

          2、面向過程封裝

          <?php  /**  * 獲取 Cookie  * @param  string $name Cookie 名稱  * @return mixed       Cookie 值  */ function cookie_get($name) { 	return isset($_COOKIE[$name]) ? $_COOKIE[$name] : null; }  /**  * 刪除 Cookie  * @param  string $name Cookie 名稱  */ function cookie_del($name) { 	setcookie($name, '', time() - 3600); }  /**  * 設(shè)置Cookie  * @param  string  $name   Cookie 名稱  * @param  mixed  $value  Cookie 值  * @param  integer $expire Cookie 過期時間  * @param  string  $path   Cookie 有效路徑  * @param  string  $domian Cookie 有效域名/子域名  */ function cookie_set($name, $value, $expire = 3600, $path = '/', $domian = '') { 	setcookie($name, $value, time() + $expire); }  /**  * 檢測 Cookie  * @param  string  $name      Cookie 名稱  * @param  boolean $has_empty 檢測為空  * @return boolean               */ function cookie_has($name) { 	return isset($_COOKIE[$name]); }  ?>

          3、面向?qū)ο蠓庋b

          <?php   class Cookie {     const OPTION_EXPIRE = 'expire';     const OPTION_PATH = 'path';     const OPTION_DOMAIN = 'domain';     const OPTION_SECURE = 'secure';     const OPTION_HTTPONLY = 'httponly';      /**      * Cookie 實例      * @var null      */     private static $instance = null;      /**      * Cookie 選項      * @var array      */     private $options = [         self::OPTION_EXPIRE => 3600,         self::OPTION_PATH => '/',         self::OPTION_DOMAIN => 'domain',         self::OPTION_SECURE => false,         self::OPTION_HTTPONLY => false     ];      /**      * Cookie constructor.      * @param $options      */     private function __construct($options)     {         $this->setOptions($options);     }      /**      *  privated __clone      */     private function __clone()     {      }      /**      * 獲取實例      * @param $options      * @return Cookie|null      */     public static function getInstance($options)     {         if (is_null(self::$instance)) {             self::$instance = new self($options);         }          return self::$instance;     }      /**      * 設(shè)置選項      * @param $name      * @param $value      */     public function setOption($name, $value)     {         if (isset($this->options[$name])) {             $this->options[$name] = $value;         }          throw new InvalidArgumentException('Cookie option not exists:{$name}');     }      /**      * 設(shè)置多個選項      * @param $options      */     public function setOptions($options)     {         foreach ($options as $name => $value) {             $this->setOption($name, $value);         }     }      /**      * 設(shè)置 Cookie      * @param $name      * @param $value      * @param array $options      */     public function set($name, $value, $options = [])     {         $this->setOptions($options);          if (is_array($value) || is_object($value)) {             $value = json_encode($value);         }          setcookie(             $name,             $value,             $this->options[self::OPTION_EXPIRE],             $this->options[self::OPTION_PATH],             $this->options[self::OPTION_DOMAIN],             $this->options[self::OPTION_SECURE],             $this->options[self::OPTION_HTTPONLY]         );     }      /**      * 獲取 Cookie      * @param $name      * @return array|mixed      */     public function get($name)     {         $value = $_COOKIE[$name];          if (is_array($value)) {             $arr=[];             foreach ($value as $k => $v) {                 $arr[$k] = substr($v, 0,1) == '{' ? json_decode($value) : $v;             }             return $arr;         } else {             return substr($value, 0,1) == '{' ? json_decode($value) : $value;         }     }      /**      * 刪除 Cookie      * @param $name      * @param array $options      */     public function del($name, $options = [])     {         $this->setOptions($options);          $value = $_COOKIE[$name];          if ($value) {             if (is_array($value)) {                 foreach ($value as $k => $v) {                     setcookie(                         $name . '[' . $k . ']',                         '',                         time() - 3600,                         $this->options[self::OPTION_EXPIRE],                         $this->options[self::OPTION_PATH],                         $this->options[self::OPTION_DOMAIN],                         $this->options[self::OPTION_SECURE],                         $this->options[self::OPTION_HTTPONLY]                     );                     unset($v);                 }             }else{                 setcookie(                     $name,                     '',                     time() - 3600,                     $this->options[self::OPTION_EXPIRE],                     $this->options[self::OPTION_PATH],                     $this->options[self::OPTION_DOMAIN],                     $this->options[self::OPTION_SECURE],                     $this->options[self::OPTION_HTTPONLY]                 );                 unset($value);             }         }     } }

          4、記住登錄賬號示例

          <?php  function cookie_get_username() {     return isset($_COOKIE['username']) ? $_COOKIE['username'] : null; }  function cookie_get_password() {     return isset($_COOKIE['username']) ? $_COOKIE['username'] : null; }  function cookie_get_remember() {     return isset($_COOKIE['remember']) ? 'checked' : null; }   if ($_SERVER['REQUEST_METHOD'] === 'POST') {      $username = $_POST['username'];     $password = $_POST['password'];      if (isset($_POST['remember']) && $_POST['remember'] === '1') {         setcookie('username', $username, time() + 3600);         setcookie('password', $password, time() + 3600);         setcookie('remember', '1', time() + 3600);     } else {         setcookie('username', '', time() - 3600);         setcookie('password', '', time() - 3600);         setcookie('remember', '', time() - 3600);     }      die('登錄成功!'); }  ?>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <form action="" method="post">     <table width="300" border="1" align="center" cellpadding="5" cellspacing="5">         <thead>         <tr>             <td colspan="2" align="center"><b>登錄</b></td>         </tr>         </thead>         <tr align="center">             <td>用 戶 名</td>             <td><input type="text" name="username" value="<?=cookie_get_username()?>"></td>         </tr>         <tr align="center">             <td>密碼</td>             <td><input type="password" name="password" value="<?=cookie_get_password()?>"></td>         </tr>         <tr align="center">             <td>記住賬號</td>             <td>                 <input type="checkbox" name="remember" value="1" <?=cookie_get_remember()?>>             </td>         </tr>         <tr align="center">             <td colspan="2"><input type="submit" name="Submit" value="提交" /></td>         </tr>     </table> </form>

          六:php cookie 精選技術(shù)文章

          待添加

          七:php cookie 相關(guān)視頻教程

          待添加

        2. 微信
        3. 分享
        4. php cookie(專題)

        5. 相關(guān)標簽:cookie
        6. 本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請注明出處,感謝您的尊重!
          • 上一篇:2020年ajax面試題及答案(最新)
          • 下一篇:沒有了
          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號