Board logo

標題: [教學] (教學第28篇) 使用 Cookies 下篇 [打印本頁]

作者: 小誌    時間: 2010-5-19 08:08     標題: (教學第28篇) 使用 Cookies 下篇

讀取Cookies
在一個Cookie檔案內可以包含多個Cookies資訊,所以,當我們要讀取某個Cookies資訊時可就累了,必須要在Cookie檔案內進行搜尋。同時,一個Cookies資訊裡還包含Cookies的名稱及它所代表的資料值,我們還得分解名稱與資料值,假設在我們Cookie檔案內的內容如下:
  1. myname=charles; age=30
複製代碼
在這個Cookie檔案內有兩個Cookies:一個是「myname」,它的值為「charles」;另一個是「myname」,它的值為「30」,而兩個Cookies之間是使用一個分號及一個空白(space)來區隔。
那如果我要取「myname」這個Cookies的值「charles」該如何處理?

位置搜尋法
我們來建立一個擷取Cookies值的函式,假設這個擷取函式的名稱為getValue(),當我們想要得知某個Cookies的值時,只要呼叫getValue()函式,同時在呼叫時傳遞一個Cookies的名稱給getValue()函式,getValue()函式就會取得此Cookies的值:
Cookies擷取函式
  1. function getValue(cookiesname)
  2. {
  3. cookiesname = cookiesname + “=”
  4. if (document.cookie.length > 0)
  5. }
  6. position = document.cookie.indexOf(cookiesname)
  7. if (position != -1)
  8. {
  9. position = position + cookiesname.length
  10. endposition = document.cookie.indexOf(“;” , position)
  11. if (endposition == -1)
  12. {
  13. endposition = document.cookie.length
  14. }
  15. return unescape(document.cookie.substring(position,endposition))
  16. }
  17. }
  18. return null
  19. }
複製代碼


實例學習:
將寫入的瀏覽者姓名擷取出來。
  1. <HTML>
  2. <HEAD>
  3. <TITLE>擷取Cookies</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <SCRIPT Language="JavaScript">
  7. //Cookies值擷取函式
  8. function getValue(cookiesname)
  9. {
  10. cookiesname = cookiesname + "="
  11. if (document.cookie.length > 0)
  12. {
  13. position = document.cookie.indexOf(cookiesname)
  14. if (position != -1)
  15. {
  16. position = position + cookiesname.length
  17. endposition = document.cookie.indexOf(";" , position)
  18. if (endposition == -1)
  19. {
  20. endposition = document.cookie.length
  21. }
  22. return unescape(document.cookie.substring(position,endposition))
  23. }
  24. }
  25. return null
  26. }

  27. //呼叫Cookies值擷取函式
  28. name=getValue("username")
  29. //將取出的Cookies顯示出來
  30. alert ("你的名字是:" + name)

  31. </SCRIPT>
  32. </BODY>
  33. </HTML>
複製代碼
[attach]726[/attach]

       提示!!
Escape函式會將特殊字元或符號以對應的escape字串替代,若我們要還原這些特殊字元或符號則可以使用unscape函式將其還原。
作者: 小誌    時間: 2010-5-19 08:10

刪除Cookies
要將Cookies刪除方法很簡單,只要將Cookies的到期日設定為「過去的日期」即可,所謂的「過去的日期」就是比你目前系統時間還早的日期啦!但是,你所要更新的Cookies名稱必須與你要刪除的Cookies名稱相同!

假設你的機器裡有一個Cookies它的名稱是testCookies,現在你要把它刪除了:
  1. cookiesname=”testCookies”
  2. deltime=”Thu, 29 Sep 1990 00:00:01 GMT”
  3. document.cookie = cookiesname + ”=; expires=” + deltime
複製代碼
注意喔!deltime變數內的日期是格林威治格式,而且是要比你系統時間更早的日期。

如果你覺得每次刪除Cookies都要寫一長串的日期很煩,那就把刪除Cookies的敘述寫成一個函式吧!當你要刪除Cookies的時候,就呼叫函式並傳給函式一個Cookies名稱就可以將該Cookies刪除了,如下面這個clear()函式:
  1. function clear(cookiesname)
  2. {
  3. document.cookie = cookiesname + ”=; expires= Thu, 29 Sep 1990 00:00:01 GMT”
  4. }
複製代碼
clear()函式只是將你想刪除的Cookies值清除,並把到期日設定為以前的時間而已,你不要以為這樣Cookies就不見了呦!還要等你將瀏覽器關閉之後,它才會真正的消失。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)