Asp: คู่มือการใช้คุกกี้ โค้ดโดยละเอียด และบทช่วยสอน
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-06-24 17:28:30
ในความเป็นจริง ในการพัฒนาเว็บ คุกกี้เป็นเพียงไฟล์ข้อความ เมื่อผู้ใช้เยี่ยมชมไซต์ คุกกี้นั้นจะถูกจัดเก็บไว้ในคอมพิวเตอร์ที่ผู้ใช้ใช้ ทางเว็บสามารถดึงข้อมูลนี้ออกมาได้
แม้ว่าคุกกี้อาจดูไม่น่าตื่นเต้นในขณะนี้ แต่จริงๆ แล้วคุณสามารถทำสิ่งที่มีความหมายกับคุกกี้ได้มากมาย! ตัวอย่างเช่น คุณสามารถวางแบบสำรวจบนเว็บไซต์ของคุณ โดยขอให้ผู้เยี่ยมชมระบุสีและแบบอักษรที่พวกเขาชื่นชอบ จากนั้นจึงปรับแต่งอินเทอร์เฟซเว็บของผู้ใช้ตามสิ่งเหล่านี้ นอกจากนี้คุณยังสามารถบันทึกรหัสผ่านเข้าสู่ระบบของผู้เยี่ยมชมได้ เพื่อที่ว่าเมื่อผู้เยี่ยมชมเยี่ยมชมเว็บไซต์อีกครั้ง เขาหรือเธอไม่จำเป็นต้องป้อนรหัสผ่านเพื่อเข้าสู่ระบบ
แน่นอนว่าคุกกี้ก็มีข้อบกพร่องบางประการเช่นกัน ประการแรก เนื่องจากฟังก์ชันของคุกกี้สามารถตั้งโปรแกรมเพื่อให้บรรลุจุดประสงค์ที่ไม่ดีได้ เบราว์เซอร์ส่วนใหญ่จึงมีการตั้งค่าความปลอดภัยที่คุณสามารถกำหนดได้ว่าจะอนุญาตหรือยอมรับคุกกี้ ดังนั้นจึงไม่มีการรับประกันว่าคุกกี้จะสามารถใช้งานได้ตลอดเวลา นอกจากนี้ ผู้เยี่ยมชมอาจลบโดยตั้งใจหรือไม่ตั้งใจก็ได้
คุกกี้ เมื่อเครื่องของผู้เยี่ยมชมพบปัญหา "หน้าจอสีน้ำเงิน" หรือหลังจากฟอร์แมตฮาร์ดดิสก์ใหม่หรือติดตั้งระบบ คุกกี้ที่บันทึกไว้ก่อนหน้านี้ทั้งหมดจะสูญหาย สุดท้ายนี้ เบราว์เซอร์รุ่นแรกๆ บางรุ่นไม่รองรับคุกกี้
คุณสามารถทำอะไรกับคุกกี้ได้บ้าง?
มี 2 วิธีพื้นฐานในการใช้คุกกี้:
1. เขียนคุกกี้ไปยังคอมพิวเตอร์ของผู้เยี่ยมชม (ใช้คำสั่ง RESPONSE)
2. ดึงคุกกี้จากคอมพิวเตอร์ของผู้เยี่ยมชม (ใช้คำสั่ง REQUEST)
ไวยากรณ์พื้นฐานสำหรับการสร้างคุกกี้
Response.Cookies("CookieName")=ค่า
การรันโค้ดต่อไปนี้จะสร้างคุกกี้บนคอมพิวเตอร์ของผู้เยี่ยมชมด้วย name=VisitorName และ value=Ken
Response.Cookies("VisitorName")="เคน"
การรันโค้ดต่อไปนี้จะสร้างคุกกี้บนคอมพิวเตอร์ของผู้เยี่ยมชม โดยมีชื่อ = VisitorName และ value = ค่าของชื่อผู้ใช้ในแบบฟอร์ม
Response.Cookies("VisitorName")=Request.Form("ชื่อผู้ใช้")
ไวยากรณ์พื้นฐานสำหรับการอ่านคุกกี้
Request.Cookies("ชื่อคุกกี้")
ค่าคำขอสามารถถือเป็นตัวแปรได้ การดำเนินการโค้ดต่อไปนี้จะดึงค่าคุกกี้ชื่อ KensCookie และจัดเก็บไว้ในตัวแปร MyVar:
MyVar=Request.Cookies("KensCookie")
การดำเนินการโค้ดต่อไปนี้จะพิจารณาว่าค่าคุกกี้ชื่อ KensCookie เป็น "ใช่" หรือไม่:
ถ้า Request.Cookies("KensCookie")="Yes" แล้ว
คุกกี้ที่มีคุณสมบัติหลากหลาย
คุณสามารถขยายโค้ดด้านบนให้เป็นค่าคีย์ย่อยของคุกกี้ (CookieSubName) ได้ โดยโค้ดจะเป็นดังนี้:
Response.Cookies("VisitorName")("FirstName")="เคน"
Response.Cookies("VisitorName")("LastName")="Baumbach"
ก่อนที่จะอธิบายตัวอย่าง เราจะมาอภิปรายแนวคิดสุดท้ายสองประการ: แบบแผนคำสั่งและเวลาหมดอายุการใช้งาน
แบบแผนการตั้งชื่อ
เช่นเดียวกับการตั้งชื่อตัวแปรอื่นๆ การตั้งชื่อคุกกี้อย่างเหมาะสมและไม่ซ้ำกันจะช่วยให้คุณใช้งานได้อย่างสม่ำเสมอในโปรแกรมของคุณ คุณสามารถใช้ 1 หรือ 2 รายการต่อไปนี้
แอตทริบิวต์คุกกี้ชื่อตัวแปรคุกกี้:
คุณลักษณะโดเมน (โดเมน): คุณลักษณะโดเมนจะระบุว่าคุกกี้ถูกสร้างขึ้นหรืออ่านจากเว็บไซต์ใด ตามค่าเริ่มต้น คุณลักษณะโดเมนของคุกกี้จะถูกตั้งค่าเป็นเว็บไซต์ที่สร้างคุกกี้ แต่คุณสามารถเปลี่ยนแปลงได้ตามต้องการ รหัสที่เกี่ยวข้องมีดังนี้: Response.Cookies("CookieName").Domain = " www.mydomain.com "
คุณลักษณะเส้นทาง (เส้นทาง): คุณลักษณะเส้นทางสามารถใช้ข้อกำหนดด้านความปลอดภัยเพิ่มเติมได้ โดยการตั้งค่าเส้นทางที่แม่นยำบนเว็บไซต์ คุณสามารถจำกัดขอบเขตการใช้คุกกี้ได้ ตัวอย่างเช่น:
Response.Cookies("CookieName").Path = "/maindir/subdir/path"
ใช้เวลาหมดอายุ
โดยปกติแล้ว คุกกี้จะหยุดทำงานเมื่อปิดเบราว์เซอร์ แต่หลายครั้ง เช่น ตัวอย่างเว็บไซต์ที่กล่าวถึงด้านล่าง เราต้องการบันทึกคุกกี้บนคอมพิวเตอร์ของผู้เยี่ยมชมเป็นระยะเวลานานขึ้น โชคดีที่มีวิธีที่จะบรรลุเป้าหมายนี้ได้ รหัสต่อไปนี้สามารถตั้งเวลาหมดอายุของคุกกี้เป็น 2010
1 มกราคม:
Response.Cookies("CookieName").Expires=#1 มกราคม 2010#
การดำเนินการโค้ดต่อไปนี้จะตั้งเวลาหมดอายุของคุกกี้เป็น "เวลาสร้างคุกกี้ + 365 วัน":
Response.Cookies("CookieName")=วันที่+365
ตัวอย่างการใช้คุกกี้ที่ใช้งานได้จริง (น่าตื่นเต้นมาก)
ตอนนี้เรามาพูดถึงตัวอย่างเชิงปฏิบัติกันดีกว่า สมมติว่าคุณต้องการทำแบบสำรวจ ทุกคนต้องกรอกข้อมูลเมื่อมาเยี่ยมครั้งแรก แต่เมื่อกลับมาอีกครั้งในอนาคต ก็ไม่จำเป็นต้องทำแบบนั้นอีก การใช้คุกกี้ทำให้คุณสามารถแก้ไขปัญหานี้ได้อย่างน่าพอใจโดยไม่ต้องใช้ฐานข้อมูล
< %@ LANGUAGE="VBSCRIPT" % >
-
แบบสำรวจ = คำขอคุกกี้ ("KensSurvey")
ถ้า Survey="" แล้ว
Response.Cookies("KensSurvey")="x"
Response.Cookies("KensSurvey").หมดอายุ=#วันที่ 1 มกราคม 2010#
Response.Redirect "survey.asp"
อื่น
'ส่วนที่เหลือของหน้า
จบถ้า
-
เอาล่ะ เรามาเริ่มต้นใหม่อีกครั้งและหารือเกี่ยวกับโค้ดด้านบนนี้
ขั้นแรก ให้ตั้งค่าเพจและอ่านค่าคุกกี้ชื่อ KensSurvey:
< %@ LANGUAGE="VBSCRIPT" % >
-
แบบสำรวจ = คำขอคุกกี้ ("KensSurvey")
จากนั้น พิจารณาว่ามีค่าคุกกี้อยู่แล้วหรือไม่:
ถ้า Survey="" แล้ว
หากไม่มีอยู่ คุกกี้จะถูกสร้างขึ้นและตั้งค่า และเพจจะถูกเปลี่ยนเส้นทางไปที่ Survey.asp เมื่อคุณเยี่ยมชมครั้งถัดไป เนื่องจากมีค่าคุกกี้อยู่ คุณจะไม่ไป
หน้า Survey.asp
Response.Cookies("KensSurvey")="x"
Response.Cookies("KensSurvey").หมดอายุ=#วันที่ 1 มกราคม 2010#
Response.Redirect "survey.asp"
หากมีคุกกี้อยู่แล้ว ผู้เยี่ยมชมจะรันโค้ดที่เหลือบนเพจ:
'ส่วนที่เหลือของหน้า
จบถ้า
-
ตัวอย่างที่ 2
นี่เป็นอีกตัวอย่างง่ายๆ: แสดงข้อความต้อนรับแก่ผู้เยี่ยมชมเมื่อพวกเขาเยี่ยมชมไซต์เป็นครั้งแรก รหัสมีดังนี้:
< %@ LANGUAGE="VBSCRIPT" % >
-
RequestName = Request.Form("ชื่อ")
RequestLeaveMeAlone = แบบฟอร์มคำขอ ("LeaveMeAlone")
ถ้า RequestName < >"" หรือ RequestLeaveMeAlone < >"" แล้ว
Response.Cookies("MySiteVisitorName") = ชื่อคำขอ
Response.Cookies("MySiteVisitorName").Expires = #1 มกราคม 2010#
Response.Cookies("MySiteLeaveMeAlone") = คำขอLeaveMeAlone
Response.Cookies("MySiteLeaveMeAlone").หมดอายุ = #1 มกราคม 2010#
จบถ้า
VisitorName = request.cookies("MySiteVisitorName")
LeaveMeAlone = request.cookies("MySiteLeaveMeAlone")
ถ้า VisitorName ="" และ LeaveMeAlone ="" แล้ว
-
< HTML > < ส่วนหัว > </ ส่วนหัว >
< body bgcolor="#ccffff" text="black" link="navy" vlink="purple" >
< DIV ALIGN="ตรงกลาง" >
< รูปแบบการกระทำ = "index.asp" วิธีการ = "POST" >
< H2 >มาเป็นเพื่อนกันเถอะ</H2 >
คุณชื่ออะไร (เว้นว่างไว้และกดปุ่มส่งหากคุณไม่ต้องการให้เราส่ง)
ทราบ)?
< ประเภทอินพุต = "ข้อความ" ชื่อ = "ชื่อ" >< BR >< BR >
< ประเภทอินพุต = "ซ่อน" ชื่อ = "LeaveMeAlone" value = "x" >
< ประเภทอินพุต = "ส่ง" ค่า = "ส่ง" >
</ /แบบฟอร์ม>
</ /DIV >
</ /ร่างกาย >
-
จบถ้า
ถ้า VisitorName < > "" แล้ว
Response.write "สวัสดี " & VisitorName & "! ฉันหวังว่าคุณจะมีวันดีๆ!"
จบถ้า
'ส่วนที่เหลือของหน้า
-
เอาล่ะ มาดูกันว่าการติดตั้งโค้ดด้านบนนี้ทำอะไรได้บ้าง ขั้นแรกให้ตั้งค่าเพจ จากนั้นให้ตรวจสอบตัวแปรแบบฟอร์ม (ในหน้าเดียวกัน) หากมีตัวแปรแบบฟอร์มอยู่ ให้สร้างคุกกี้และตั้งเวลาหมดอายุ
< %@ LANGUAGE="VBSCRIPT" % >
-
RequestName = Request.Form("ชื่อ")
RequestLeaveMeAlone = แบบฟอร์มคำขอ ("LeaveMeAlone")
ถ้า RequestName < >"" หรือ RequestLeaveMeAlone < >"" แล้ว
Response.Cookies("MySiteVisitorName") = ชื่อคำขอ
Response.Cookies("MySiteVisitorName").Expires = #1 มกราคม 2010#
Response.Cookies("MySiteLeaveMeAlone") = คำขอLeaveMeAlone
Response.Cookies("MySiteLeaveMeAlone").หมดอายุ = #1 มกราคม 2010#
จบถ้า
จากนั้น อ่านคุกกี้:
VisitorName = request.cookies("MySiteVisitorName")
LeaveMeAlone = request.cookies("MySiteLeaveMeAlone")
หากไม่มีคุกกี้อยู่ในคอมพิวเตอร์ของผู้เยี่ยมชม ให้สร้างแบบฟอร์มเพื่อขอข้อมูลที่เกี่ยวข้อง:
ถ้า VisitorName ="" และ LeaveMeAlone ="" แล้ว
-
<HTML>
<หัว>
</ /หัว >
< body bgcolor="#ccffff" text="black" link="navy" vlink="purple" >
< DIV ALIGN="ตรงกลาง" >
< รูปแบบการกระทำ = "index.asp" วิธีการ = "POST" >
< H2 >มาเป็นเพื่อนกันเถอะ</H2 >
คุณชื่ออะไร (เว้นว่างไว้และกดปุ่มส่งหากคุณไม่ต้องการให้เราส่ง)
ทราบ)?
< ประเภทอินพุต = "ข้อความ" ชื่อ = "ชื่อ" >< br >< br >
< ประเภทอินพุต = "ซ่อน" ชื่อ = "LeaveMeAlone" value = "x" >
< ประเภทอินพุต = "ส่ง" ค่า = "ส่ง" >
</ /แบบฟอร์ม>
</ /DIV >
</ /ร่างกาย >
-
จบถ้า
หากมีคุกกี้อยู่แล้วและมีชื่อผู้ใช้อยู่แล้ว ให้แสดงหน้าจอต้อนรับแก่ผู้เยี่ยมชมและดำเนินการโค้ดที่เหลือ
ถ้า VisitorName < > "" แล้ว
Response.write "สวัสดี " & VisitorName & "! ฉันหวังว่าคุณจะมีวันดีๆ!"
จบถ้า
'ส่วนที่เหลือของหน้า
-
แม้ว่าตัวอย่างข้างต้นจะดูเรียบง่าย แต่แอปพลิเคชันเชิงสร้างสรรค์จำนวนมากก็สามารถขยายออกไปได้ คุณสามารถเพิ่มคุณสมบัติมากมายให้กับแบบฟอร์มของคุณเพื่อปรับแต่งเว็บไซต์ของคุณ
คุณยังสามารถให้ผู้เข้าชมปรับแต่งสี แบบอักษร และองค์ประกอบอื่นๆ ของเว็บไซต์ได้ หากเป็นไปได้ คุณสามารถถามวันเกิดของผู้มาเยือนได้ และเมื่อผู้เยี่ยมชมมาในวันนั้น คุณสามารถแสดงข้อความ "สุขสันต์วันเกิด" ให้เขาดูได้
อย่างที่คุณเห็น ความสามารถในการปรับขนาดของคุกกี้นั้นไม่มีที่สิ้นสุด และบทความนี้เป็นเพียงจุดเริ่มต้นเท่านั้น