cookie 是強大且方便的功能,它能提供一個範圍內的全程變數,來看看cookie 的語法:
setcookie(cookievalue,value,time,path,domain);
cookievalue 是設定的cookie 變數, value 是將一個值設為cookie 的變數,time 是這個cookie 變數作用的時間,path 是cookie 作用的路徑,domain 是cookie 作用的域;
需要注意的是在php 程式內設定cookie 時一定不能在html 這個標記的後面設定.
下面看例子:
setcookie("cookietime","2001-5-2",time()+3600,"/","test.php");
這個cookie 設定的意思是給日期"2001-5-2" 設定一個cookie 變數$cookietime ,其作用時間為3600 秒,這個變數在/test.php 裡生效.
這時在test.php 裡加上echo $ cookietime; 就會顯示2001-5-2 .
如果將cookie 裡的時間置空,那麼關閉瀏覽器後,cookie 就失效了.
cookie 有一個特殊的地方就是cookie 設定的值並不會馬上被執行,直到第二次引用時才會被執行,那麼第一次引用的cookie 值是什麼呢?
就是cookie 上一次設定的值,這兒理解起來有點費勁,沒關係,舉個例子就全明白了:
setcookie("cookietime",time,time()+3600,"/","test.php");
第一次引用時$cookietime 內沒有值,第二次引用時發現$cookietime內的time 才顯示出來,修該time 為2001:
setcookie("cookietime",2001,time()+3600,"/","test.php");
再執行一次,第一次引用時$cookietime 的值為time,第二次引用$cookietime 的值才為2001;那麼cookie 的這個特性有何功用呢?聰明的讀者可能已經知道其用法了,就是用於通告和警報功能上的;
看個關於使用cookie 這個特性的例子,這裡程式要實現的功能是當用戶下一次來瀏覽網站時,所有這個用戶沒看過的新資訊後面都添加一個(new),用cookie 來完成這個功能再簡單不過了,至少在我看來還沒有任何其它方法能比使用cookie 來完成這個功能更簡單的了.
存儲信息自然需要時間值,只要數據庫有存儲與每條信息相關的時間值加上cookie 就能完成這個看起來還不錯的功能:
test.php:
$time=date('Y-m-d H:i:s');
setcookie("cookietime",$time,time() +3600000,"/","test.php");
......
......
//從資料庫取出時間值
$datatime=mysql_result($result,$i," time");
//比較兩個時間的大小,所有$datatime 大於$cookietime 的資訊後面加上(new)
if ($datatime>$cookietime)
echo "(new)";
... ...
......
整個過程就是這麼簡潔明了,當用戶向網站發出瀏覽/test.php 的請求時,他的瀏覽器就會把他上一次瀏覽/test.php 的cookie 記錄發給伺服器,伺服器接受這個cookie 值並做處理,同時把使用者瀏覽器的cookie 重新設定,並回傳處理的結果,這就是cookie 運作的原理.