ในบทความก่อนหน้าผู้เขียนแนะนำในรายละเอียดสองวิธีที่ใช้งานได้จริงสำหรับการใช้แอปพลิเคชันวัตถุในตัว ASP และเซสชัน เนื่องจากทั้งสคริปต์ OnStart และ Onend Events จะต้องประกาศในไฟล์ Global.asa บทความนี้จะแนะนำรายละเอียดเกี่ยวกับวิธีการใช้ไฟล์ global.asa เพื่อให้ทุกคนสามารถเชี่ยวชาญความรู้ที่พวกเขาได้เรียนรู้จนถึงขณะนี้บทความนี้จะรวมโปรแกรมแชท ASP สำหรับการอ้างอิงของคุณ
เมื่อเร็ว ๆ นี้เพื่อนหลายคนได้ส่งจดหมายถึงฉันเพื่อถามฉันว่าทำไมมีข้อผิดพลาดเช่นนั้นและข้อผิดพลาดดังกล่าวเมื่อเรียกใช้โปรแกรมตัวอย่างในสองประเด็นแรก ก่อนอื่นฉันต้องการประกาศให้คุณทราบว่าโปรแกรมเหล่านี้เขียนด้วยตัวเองและผ่านการตรวจสอบคุณสมบัติก่อนออกจากโรงงานและไม่มีผลิตภัณฑ์ปลอมและสินค้า :) เนื่องจากใช้คุกกี้ในโปรแกรมเพื่อบันทึกข้อมูลลูกค้าหากคุณไม่ได้ตั้งค่ายอมรับคุกกี้ในเบราว์เซอร์ของคุณโปรแกรมจะไม่ทำงานตามปกติ นอกจากนี้วิธีการที่โปรแกรมใช้เพื่อบันทึกข้อมูลลูกค้าในคุกกี้ของลูกค้าคือการตอบสนอง Cookie HTTP หากข้อมูลส่วนหัว HTTP ถูกส่งไปยังลูกค้าหากการตอบกลับถูกใช้หลังจากข้อมูลส่วนหัว HTTP ถูกส่งไปยังลูกค้าข้อผิดพลาดต่อไปนี้จะปรากฏขึ้น: ส่วนหัว HTTP ถูกเขียนไปยังเบราว์เซอร์ของลูกค้า การปรับเปลี่ยนส่วนหัว HTTP จะต้องเป็นก่อนที่จะเขียนลงในเนื้อหาของหน้า เพื่อนบางคนอาจไม่ให้ความสนใจเมื่อตัดโปรแกรมขัดขวางลำดับก่อนและหลังของโปรแกรมหรือเพิ่มรหัส HTML อย่างไม่ถูกต้องก่อนโปรแกรมตัวอย่าง ASP ส่งผลให้เกิดข้อผิดพลาดในโปรแกรมที่ทำงาน ดังนั้นฉันขอแนะนำว่าในอีกด้านหนึ่งอย่าทำการเปลี่ยนแปลงใด ๆ กับโปรแกรมเมื่อเรียกใช้กิจวัตรประจำวันเป็นครั้งแรกและพยายามปรับปรุงให้ดีขึ้นตามการทำความเข้าใจโปรแกรม อย่างน้อยคุณควรเลือกคุกกี้ที่ยอมรับได้ในเบราว์เซอร์
ต่อไปฉันจะแนะนำวิธีใช้ไฟล์ global.asa
ไฟล์ Global.asa คืออะไร? จริงๆแล้วมันเป็นไฟล์เสริมที่ผู้เขียนโปรแกรมสามารถระบุสคริปต์เหตุการณ์และประกาศวัตถุที่มีเซสชันและขอบเขตแอปพลิเคชัน เนื้อหาของไฟล์นี้ไม่ได้ใช้เพื่อแสดงต่อผู้ใช้ แต่เพื่อจัดเก็บข้อมูลเหตุการณ์และวัตถุที่ใช้ทั่วโลกโดยแอปพลิเคชัน ชื่อของไฟล์จะต้องเป็น global.asa และต้องเก็บไว้ในไดเรกทอรีรูทของแอปพลิเคชัน แต่ละแอปพลิเคชันสามารถมีไฟล์ global.asa หนึ่งไฟล์เท่านั้น
ในไฟล์ global.asa หากสคริปต์ที่รวมอยู่ไม่ได้ถูกห่อหุ้มด้วยแท็ก <Script> หรือวัตถุที่กำหนดไม่มีเซสชันหรือขอบเขตแอปพลิเคชันเซิร์ฟเวอร์จะส่งคืนข้อผิดพลาด เราสามารถเขียนสคริปต์ที่รวมอยู่ในไฟล์ global.asa ในภาษาที่เปิดใช้งานสคริปต์ใด ๆ หากหลายเหตุการณ์อยู่ในภาษาสคริปต์เดียวกันพวกเขาสามารถจัดระเบียบในชุดของแท็ก <Script>
กระบวนการที่ประกาศในไฟล์ Global.asa สามารถเรียกได้จากหนึ่งสคริปต์หรือมากกว่าหนึ่งสคริปต์ที่เกี่ยวข้องกับ Application_onstart, Application_onend, Session_onstart และ Events_onend ไม่สามารถใช้ได้ในหน้า ASP ของแอปพลิเคชันที่ใช้ ASP หากคุณต้องการแบ่งปันขั้นตอนระหว่างแอปพลิเคชันคุณสามารถประกาศไว้ในไฟล์แยกต่างหากจากนั้นใช้คำสั่งรวมฝั่งเซิร์ฟเวอร์ (SSI) เพื่อรวมไฟล์ในโปรแกรม ASP ที่เรียกขั้นตอน โดยทั่วไปแล้วส่วนขยายของไฟล์ที่มีอยู่ควรเป็น.
นี่คือไฟล์ global.asa มาตรฐานมาก:
<ภาษาสคริปต์ = vbscript runat = เซิร์ฟเวอร์>
'session_onstart ทำงานเมื่อไคลเอนต์ทำงานหน้าใด ๆ ในแอปพลิเคชัน ASP เป็นครั้งแรก
'session_onend ทำงานเมื่อเซสชันของลูกค้าหมดเวลาหรือออกจากแอปพลิเคชัน
'Application_onstart ทำงานเมื่อลูกค้ารายใดเข้าถึงหน้าแรกของแอปพลิเคชัน
'Application_onend ทำงานเมื่อเว็บเซิร์ฟเวอร์ของไซต์หยุดทำงาน
</script>
<ภาษาสคริปต์ = vbscript runat = เซิร์ฟเวอร์>
Application_onstart ย่อย
VisitorCountFileName = Server.mappath ( /ex2) + /visitcount.txt
ตั้งค่า fileObject = server.createObject (scripting.filesystemobject)
ตั้งค่า = fileObject.opentextfile (VisitorCountFileName, 1, false, false)
แอปพลิเคชัน (ผู้เยี่ยมชม) = out.readline
แอปพลิเคชัน (VisitorCountFileName) = VisitorCountFileName
สิ้นสุดย่อย
'===================================================== =================== ==========
Application_onend ย่อย
ตั้งค่า fileoutObject = server.createObject (scripting.filesystemobject)
ตั้งค่า = fileOutObject.createTextFile (แอปพลิเคชัน (VisitorCountFileName), true, false)
Out.WriteLine (แอปพลิเคชัน (ผู้เยี่ยมชม))
สิ้นสุดย่อย
'===================================================== =================== =========== Sub Session_onstart
session.timeout = 5
แอปพลิเคชัน (ผู้เยี่ยมชม) = แอปพลิเคชัน (ผู้เยี่ยมชม) + 1
เซสชัน (id) = session.sessionid
สิ้นสุดย่อย
</script>
ในโปรแกรม Global.ASA นี้ส่วนประกอบการเข้าถึงไฟล์ของ ASP นั้นเกี่ยวข้องซึ่งมีวิธีการคุณสมบัติและคอลเลกชันสำหรับการเข้าถึงระบบไฟล์ สิ่งนี้จะถูกกล่าวถึงในส่วนประกอบ ASP ในอนาคต ที่นี่มันทำหน้าที่สร้างไฟล์ใหม่บนเซิร์ฟเวอร์และเขียนลงในไฟล์ นี่คือไฟล์ทั่วโลกของแอปพลิเคชันตัวนับ ASP Page Access พา ธ และเนื้อหาของไฟล์ในตัวแปรระดับแอปพลิเคชัน เมื่อไคลเอนต์ใด ๆ เข้าถึงหน้าใด ๆ ในแอปพลิเคชัน ASP Process Session_onStart นิยามจะเพิ่มค่าของผู้เยี่ยมชมตัวแปรระดับแอปพลิเคชันโดยอัตโนมัติ ด้วยวิธีนี้เมื่อใดก็ตามที่ลูกค้าเข้าชมหน้าผู้เข้าชมตัวแปรจะถูกเพิ่มลงในฟังก์ชั่นของการนับอัตราการคลิกผ่านโดยอัตโนมัติ เนื่องจากค่าของผู้เข้าชมตัวแปรถูกเก็บไว้ในหน่วยความจำระบบหากเซิร์ฟเวอร์ถูกปิดหรือรีสตาร์ทข้อมูลที่เก็บไว้ในตัวแปรจะหายไปโดยอัตโนมัติ เซิร์ฟเวอร์ถูกปิดหรือรีสตาร์ท
หลังจากช่วงเวลาแห่งการศึกษานี้ฉันเชื่อว่าทุกคนสามารถใช้วัตถุ ASP ในตัวที่เราได้เรียนรู้ที่จะเขียนแอปพลิเคชัน ASP ที่ง่ายขึ้น พัฒนาแอพพลิเคชั่น ASP ที่เรียบง่าย แต่ใช้งานได้จริง ให้ฉันให้โปรแกรม ASP Web Chat Room ง่าย ๆ บางทีเพื่อน ๆ อาจเห็นวิธีการเขียนโปรแกรมแชท ASP ในนิตยสารบางฉบับ แต่ผู้เขียนเขียนโปรแกรมที่ง่ายขึ้นที่นี่โดยใช้ไฟล์เดียวเท่านั้น โปรดตัดรหัสต่อไปนี้ลงใน Notepad และบันทึกเป็น chat.asp
< %@ language = vbscript %>
-
response.buffer = true 'ตั้งค่าแคชเอาท์พุทเพื่อแสดงหน้าต่างๆ
ในข้อผิดพลาดกลับมาใหม่ 'ละเว้นส่วนข้อผิดพลาดของโปรแกรม
หาก request.serverVariables (request_method) = รับแล้ว
'กำหนดวิธีการที่ลูกค้าร้องขอหน้าเว็บ
-
'อินเทอร์เฟซเข้าสู่ระบบลูกค้า
-
-
<รูปแบบวิธี = โพสต์การกระทำ = chat.asp> <p>
<ประเภทอินพุต = ชื่อข้อความ = nick size = 20 value = nick style = พื้นหลังสี: rgb (192,192,192)> <br>
<อินพุตประเภท = ส่งค่า = ป้อนชื่อห้องแชท = B1 สไตล์ = สี: RGB (255,255,0);
<p> <อินพุตประเภท = ชื่อที่ซ่อน = log size = 20 value = 1> <br> </p>
</form>
-
Response.end 'สิ้นสุดกระบวนการของโปรแกรม
อื่น
Response.Clear 'ล้างเนื้อหาในแคช
ทึบ
ถ้า request.form (nick) <> จากนั้น
'ตรวจสอบว่าลูกค้าอยู่ในอินเทอร์เฟซแชท
เซสชัน (nick) = request.form (Nick)
สิ้นสุดถ้า
-
ส่วนต่อประสานการแชทของลูกค้า
-
-
<รูปแบบวิธีการ = โพสต์แอ็คชั่น = แชทชื่อชื่อ = form1> <p> < %= เซสชัน (นิค) %> พูด: <อินพุตประเภท = ชื่อข้อความ = talk size = 50> <br>
<ประเภทอินพุต = ส่งค่า = ส่งชื่อ = b1>
<อินพุตประเภท = รีเซ็ตค่า = ยกเลิกชื่อ = b2> </p>
</form>
<a href =/asptest/shusheng/chat.asp> ปล่อย <//a> <br> <br>
-
ถ้า request.form (บันทึก) <> 1 แล้ว
ถ้า trim (request.form (talk)) = จากนั้น
'ตรวจสอบว่าผู้ใช้ไม่ได้ป้อนอะไรเลย
talk = เซสชัน (นิค) และความเงียบคือทองคำ
อื่น
talk = trim (request.form (talk))
'ลบพื้นที่หลังจากตัวละคร
สิ้นสุดถ้า
application.lock
แอปพลิเคชัน (show) = <table border = '0' cellpadding = '0' cellpacing = '0' width = '85%'> <tr> <td width =' 100%'bgcolor ='#c0c0c0 '> < /td > </tr> <tr> <td width = '100%'> <font color = '#0000ff'> & session (nick) & time & from & request.serverVariables (remote_addr) & กล่าวว่า: </font> & talk & < /td> </tr> <tr> <td width = '100%' bgcolor = '#c0c0c0'> </td> </tr> </table> <br> & แอปพลิเคชัน (แสดง)
application.unlock
Response.write แอปพลิเคชัน (แสดง)
สิ้นสุดถ้า
สิ้นสุดถ้า
-
มาทำการวิเคราะห์แบบทีละขั้นตอนของโปรแกรมห้องสนทนานี้
ก่อนอื่นเนื่องจากลูกค้าทั้งหมดในห้องแชทจะต้องสามารถแบ่งปันข้อมูลได้จึงเป็นเรื่องที่หลีกเลี่ยงไม่ได้ที่จะใช้แอปพลิเคชันวัตถุที่มีตัวแปรระดับแอปพลิเคชัน -ระดับ เราสามารถใช้วัตถุคำขอที่เราได้เรียนรู้เพื่อให้การสนทนาที่ป้อนโดยลูกค้าและบันทึกไว้ในตัวแปรพูดคุยจากนั้นจัดเก็บค่าของการพูดคุยในการแสดงตัวแปรระดับแอปพลิเคชันดังนี้:
< % แอปพลิเคชัน (แสดง) = Talk & Application (show) %>
สิ่งต่อไปที่ต้องพิจารณาคือวิธีจัดการกับลูกค้าที่แตกต่างกันเมื่อพวกเขาทำงานในแอปพลิเคชันแชทในเวลาเดียวกัน ปัญหานี้เหมือนกันกับผู้ใช้สองคนในฐานข้อมูลที่เขียนบันทึกเดียวกันในเวลาเดียวกัน ผู้ใช้รายอื่น หายไปก่อนใครก็ตามที่อยู่ในเซสชั่นเห็น เพื่อหลีกเลี่ยงปัญหาประเภทนี้เราจำเป็นต้องใช้คุณสมบัติการล็อคของออบเจ็กต์แอปพลิเคชันเพื่อ จำกัด เฉพาะผู้ใช้ปัจจุบันเพื่อแก้ไขหรือเพิ่มคุณสมบัติของวัตถุแอปพลิเคชัน ปลดล็อคอย่างชัดเจนจนถึงตอนนี้คุณสมบัติของวัตถุแอปพลิเคชันสามารถแก้ไขได้โดยผู้ใช้เท่านั้น ดังที่แสดงด้านล่าง:
application.lock
แอปพลิเคชัน (แสดง) = พูดคุยและแอปพลิเคชัน (แสดง)
application.unlock
ตอนนี้คุณได้เข้าใจส่วนหลักของโปรแกรมทั้งหมดให้พิจารณาวิธีการบันทึกข้อมูลลูกค้าที่นี่เราจะใช้ตัวแปรระดับเซสชันนั่นคือบันทึกนิคของลูกค้าในเซสชัน ชอบ:
เซสชัน (nick) = request.form (Nick)
ในที่สุดสิ่งที่เราต้องพิจารณาคือวิธีจัดการกับกิจกรรมต่าง ๆ ในไฟล์เดียวเท่านั้นเช่น: อินเทอร์เฟซเข้าสู่ระบบของลูกค้า, อินเทอร์เฟซแชทของลูกค้า ตั้งแต่ครั้งแรกที่ไคลเอนต์ร้องขอไฟล์. ASP จะใช้วิธี HTTP GET อย่างง่าย แต่เมื่อไคลเอนต์เพิ่มข้อมูลลงในฟิลด์ฟอร์มบนหน้าและส่งแบบฟอร์มไปยังตัวเองไฟล์. ASP จะถูกร้องขออีกครั้ง แต่ ข้อมูลนี้จะถูกส่งผ่านโพสต์ HTTP วิธีการร้องขอไฟล์สามารถกำหนดได้สองวิธี ขั้นแรกทดสอบว่าการร้องขอการร้องขอมีสมาชิกหรือไม่ ประการที่สองคือการใช้ตัวแปร request.servervariables (request_method) หากมีการร้องขอแบบฟอร์มผ่าน HTTP GET ตัวแปรจะส่งคืนและโพสต์หากส่งแบบฟอร์ม เนื่องจากวิธีหลังนั้นโดยตรงมากขึ้นในการกำหนดวิธีการขอไฟล์เราจึงใช้รหัสต่อไปนี้เพื่อตัดสิน:
หาก request.serverVariables (request_method) = รับแล้ว
เนื่องจากเราตั้งค่าแคช ASP เมื่อโปรแกรมกำหนดว่าวิธีการร้องขอของหน้านั้นได้รับโปรแกรมจะเรียกใช้การตอบสนองเพื่อสิ้นสุดการดำเนินการที่ตามมาทั้งหมด การรันของโปรแกรม ด้วยวิธีนี้เราสามารถใช้ไฟล์. ASP เดียวกันเพื่อแสดงอินเทอร์เฟซที่แตกต่างกันให้กับลูกค้าตามสถานการณ์ที่แตกต่างกัน
โอเคฉันได้บอกคุณว่าเป็นส่วนสำคัญของโปรแกรมแชท ASP นี้ อย่าพูดในการแชทคุณจะไม่เห็นสิ่งที่ลูกค้าคนอื่นพูด ทุกคนรู้ถึงเสน่ห์ของการแชทในอินเทอร์เน็ต ปรับปรุงระดับของโปรแกรมแชทนี้อย่างค่อยเป็นค่อยไปเพื่อให้ทุกคนสามารถส่งผ่านโอเปร่าเวอร์ชันที่ซ่อนอยู่ หมายเหตุ: ด้วยโปรแกรมแชทนี้คุณสามารถใช้มันเพื่อสร้างแอปพลิเคชันแชทบน PWS ของคุณ ผ่านคอมพิวเตอร์ของคุณ