php靈活地運用cookie

2022-04-09 04:10:49 字數 1795 閱讀 1047

高階:靈活地運用 cookie

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 工作的原理.

靈活運用PHP stdClass

轉 一維陣列,我現在特別喜歡把它寫成物件,因為鍵盤打起來比較順手,看起來也順眼,如 andy array andy a 1 andy b 2 andy c 3 我喜歡把它變成這樣 andy array andy object andy andy a 1 andy b 2 andy c 3 新建空陣列...

js 「 」 「 」的靈活運用

如果 左側表示式的值為真值,則返回右側表示式的值 否則返回左側表示式的值。js var i 真值 i i 真值 其他真值 i 其他真值 i 真值 i 如果 左側表示式的值為真值,則返回左側表示式的值 否則返回右側表示式的值。js var i 真值 i 真值 i 真值 其他真值 i 真值 i 真值 i...

靈活運用建構函式

示例 public class activityutils 得到activityutils的物件 public static activityutils getinstance return instance 管理activity的棧 public void add activity activit...