高階:靈活地運用 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...