利用Cookie記錄用戶資料
Cookie是資料存放在「用戶端」的技術
|
|
將Cookie資料取出
![]() |
|||
![]() |
資料經過處理後,以網頁呈現
大部分的網頁程式設計師,都會利用Cookie來儲存訪客「個人資料」,而將重要的「認證資料」,如:交易數量、客戶ID、密碼等儲存在伺服器裡,此時,若能讓這些「個人」資料存放在用戶電腦裡,將可大大減輕伺服器的負擔。
將訪客姓名寫入Cookie
函式:setcookie(name,[value])
回傳的值:若順利將資料寫入Cookie,則回傳整數1
舉例:setcookie("UserName","David")
setcookie()函式裡有兩個參數可供輸入,
前者為Cookie裡儲存的「變數名稱」,後者則是要儲存的「值」
範例
範例說明
當中name01~name04就是Cookie裡儲存的變數名稱,其後的字串值就是各變數儲存的值。
不過,儲存的實際動作會在網頁載入之後才進行,也就是網頁全部載入之後才存入Cookie資料。這過程中若是嘗試將Cookie裡的資料輸出,將無法正常的顯示。
此外,setcookie()在使用上有以下限制:
1. 必須寫在標記之前
2. 於setcookie()之前不可使用echo輸出資料
程式範例
:
:(略)
:
顯示結果
PHP程式設計2100 註:需在重新整理後,才會載入「值」!
PHP程式設計2007
PHP程式設計2007
備份Cookie資料
Cookie雖然很實用,但它並不是沒有缺點的,它最大的缺點就是,一旦用戶系統重新安裝、或硬碟損毀等等因素,所儲存的個人資料(Cookie)將全部消失,所以平時應將Cookie資料備份出來,畢竟剎那間的永恆並不是真正的永恆。
要備份Cookie資料,您的作業系統必須是Windows98、Windows ME
或是Windows
2000才行。
將電腦裡的Cookie資料備份出來,步驟說明如下:
1. 打開IE瀏覽器
2. 開啟「匯入/匯出精靈」
3. 選擇匯出「Cookie」
4. 選擇匯出的目的地
5. 完成匯出
備份完成之後,就不怕哪一天電腦翻臉不認人了。
您的個人資料將保留2天
函式:setcookie(name,[value])
回傳的值:若順利將資料寫入Cookie,則回傳整數1
舉例:setcookie("UserName","David",保留時間);
Setcookie()這個函式,不只有兩個參數可以設定,它還有第三個參數可以指定,那就是「保留時間」。
此「保留時間」,並不是單純的「秒數」而已,而是從1970年1月1日 開始計算的秒數,也就是「絕對秒數」。
程式範例
$gettime=date(U);
Setcookie("name03","pricepiano",$gettime+60);
程式說明
程式利用date(U)取得系統自1970年1月1日 所歷經的秒數(※參數是大寫U),並將之存在$gettime裡。
當中setcookie()第三個參數$gettime+60就是現在的時間,開始往後算60秒之意。
按下廣告後,開放檔案下載
不知您是否曾經逛過這樣的網站,如果沒有先「瀏覽」站上的「贊助廠商」,就無法下載檔案。
由於網路上有許多的廣告商,為招攬訪客,提供了這樣一個「賺錢機會」,只要在網頁裡放上它們的廣告,且說服網友按下「廣告」,就可以得到一定的「獎金」。如果以台幣1元來看,100個人按它就有100元的收入,若加上全世界的網友「參與」,要月入數十萬,應是輕而易舉的事。
那麼,要如何知道訪客已經瀏覽過廣告了呢?
只要透過「Cookie」的幫忙,再加上一點誘因,就可以讓訪客幫您按廣告了。
要做一個已經瀏覽過「廣告」的標記,大致有兩種方法:
1. 在伺服端建立標記
2. 在客戶端建立標記
在伺服端建立標記
就是在伺服器裡,建立一個檔案,並忠實地記錄下訪客的IP位置,然後再為每個IP加上標記,判斷是否已經讀取過
此需要判斷訪客是否重新登入,因為如果重新登入,就要將標記清除,以避免「上站一次,永遠有效」的情形發生
在客戶端建立標記
在伺服器裡建立標記很讓費伺服器空間與效率負擔;如果能將這些「個人標記」放在「個人的cookie」裡,那麼將大大減輕伺服器的負擔,程式撰寫也會輕鬆許多
![]() |
程式範例
變數$check 記錄是否已經閱覽過的標記
函式setcookie() 將資料寫入cookie的函式
這個程式只用了一個變數$check,就可以判斷「每位」訪客瀏覽廣告的標記,這是因為標記是存放在每個人的電腦裡的緣故。
若將標記存放在伺服器裡,則宣告的變數就十分龐大了,尤其是一次上站人數過多時,就會導致「塞車」的情形,若改用cookie就沒有這些顧慮了
範例ex12-03共有4個檔,分別為:
ex12-03.php 網站的首頁,當中有三個連結,分別是「廣告連結」、「有下載權
限的連結」、「無下載權限的連結」。
ex12-03a .php 廣告商的網頁,瀏覽此網頁後,會自動在cookie裡加上一個瀏
覽過的標記。
ex12-03b.php 具有下載權限的網頁。
ex12-03c .php 沒有下載權限的網頁,此網頁是做為對照之用。
ex12-03.php程式範例
顯示結果
![](file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image005.jpg)
ex12-03a .php程式範例
顯示結果
![](file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image007.jpg)
ex12-03b.php程式範例
七色閃電.jpg">
顯示結果
![](file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image009.jpg)
![](file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image011.jpg)
![](file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image013.jpg)
ex12-03c .php程式範例
顯示結果
![](file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image015.jpg)
沒有留言:
張貼留言