PHP Cookie

cookie 常用於辨識使用者。

Cookie 是什麼?

Cookie是由伺服器端生成,傳送給User-Agent(一般是瀏覽器),瀏覽器會將Cookie的key/value儲存到某個目錄下的文字檔案內, 下次請求同一網站時就發送該Cookie給伺服器(前提是瀏覽器設定為啟用cookie)。 Cookie名稱和值可以由伺服器端開發自己定義,這樣伺服器可以知道該使用者是否是合法使用者以及是否需要重新登入等, 伺服器可以設定或讀取Cookies中包含信息,藉此維護使用者跟伺服器會話中的狀態。

注意事項:

1. 不同的電腦無法共用Cookie

2. 同一台電腦中的不同的瀏覽器也無法共用Cookie

3. 同一個瀏覽器不同的網域下還是無法分享Cookie

4. 甚至同一個瀏覽器、同一個網域下,不同路徑的Cookie也無法實作共用

如何建立Cookie?

透過 setcookie() 函數來建立一個 cookie ,成功返回 TRUE ,否則傳回 FALSE 。

註解:setcookie() 函數必須位於 <html> 標籤之前。

語法

setcookie(name, value, expire, path, domain);

參數說明:

#參數       說明

name    cookie 名稱   

#name    cookie 名稱   

#value    可選,cookie 值expire    可選,過期時間,時間戳格式   

path    可選,伺服器端有效路徑,/ 表示整個網域有效,預設為目前設定cookie 時頁面的路徑   

##domain  這個cookie 有效的網域   

實例1

在下面的範例中,我們將建立一個名為"user" 的cookie,並為它賦值"php"。我們也規定了此cookie 在一小時後過期:

<?php
   setcookie("user", "php", time()+3600);
?>

       <html>

       .....        

註釋:在發送cookie 時,cookie 的值會自動進行URL 編碼,取回時會自動解碼。

實例 2


您也可以透過另一種方式設定 cookie 的過期時間。這也許比使用秒錶示的方式簡單。

<?php
  $expire=time()+60*60*24*30;
  setcookie("user", "php", $expire);
?>

       <html>

       .....        

在上面的實例中,過期時間設定為一個月(60 秒* 60 分* 24 小時* 30 天)。

如何取回 Cookie 的值?

PHP 的 $_COOKIE 變數用來取回 cookie 的值。 ######在下面的實例中,我們取回了名為 "user" 的 cookie 的值,並把它顯示在了頁面上:###

       <?php

       // 輸出cookie 值
       echo $_COOKIE["user"] #c_$ print _COOKIE);

       ?>        


在下列的實例中,我們使用isset() 函數來確認是否已設定了cookie:##

<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<?php
if (isset($_COOKIE["user"]))
   echo "欢迎 " . $_COOKIE["user"] . "!<br>";
else
   echo "普通访客!<br>";
?>
</body>
</html>

##如何刪除Cookie?

可以透過設定cookie 過期時間為先前的時間點來刪除一個cookie :

刪除的實例:

<?php
// 设置 cookie 过期时间为过去 1 小时
  setcookie("user", "", time()-3600);
?>

提示:

#由於協定限制,在設定cookie 之前,不能有任何內容向瀏覽器輸出

cookie 不會在設定的當前頁生效,要存取設定的cookie ,必須是另一個頁面在過期之前存取

由於cookie 資訊儲存於使用者的電腦中,那麼就有可能偽造cookie 從而造成cookie 欺騙, 一般可以對cookie 的值進行加密來預防欺騙。讀取 cookie 的時候,對 cookie 解密即可

如果瀏覽器不支援 Cookie 該怎麼辦?

如果您的應用程式需要與不支援 cookie 的瀏覽器打交道,那麼您就必須使用其他的方法在您的應用程式中的頁面之間傳遞資訊。 一種方式是透過表單傳遞資料(有關表單和使用者輸入的內容,在本教學的前面章節中我們已經介紹過了)。

下面的表單在使用者單點擊"Submit" 按鈕時,向"welcome.php" 提交了使用者輸入:

<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<form action="welcome.php" method="post">
名字: <input type="text" name="name">
年龄: <input type="text" name="age">
<input type="submit">
</form>
</body>
</html>

取回"welcome.php" 檔案中的值,如下所示:

<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
欢迎 <?php echo $_POST["name"]; ?>.<br>
你 <?php echo $_POST["age"]; ?> 岁了。
</body>
</html>

Cookie的限制問題

很多瀏覽器對Cookie的數量是有限制的,大多數瀏覽器規定一個網站可以設定的Cookie數量是不可以超過50個的,部分瀏覽器甚至限制為30個

瀏覽器對Cookie的尺寸也有限制,一般不得超過4K大小

Cookie的安全問題

如果在網咖上網後沒有關機,其他人使用你的電腦後是可以查看到你訪問的所有的網站歷史記錄以及網站保存的Cookie內容的, 如果重要的數據(用戶名、密碼、卡片號、手機號碼、身分證字號…)保存在Cookie中是非常危險的行為。

因此,重要資料不能存放在Cookie裡,如果一定要保存還是得靠伺服器

繼續學習
||
<?php setcookie("user", "php", time()+3600); ?>