แบบฟอร์มที่ซับซ้อนที่เรียกว่าในที่นี้หมายถึงแบบฟอร์มที่มีประเภทอินพุตที่แตกต่างกันหลายประเภท เช่น กล่องรายการแบบเลื่อนลง ข้อความบรรทัดเดียว ข้อความหลายบรรทัด ค่าตัวเลข ฯลฯ ในสถานการณ์ที่จำเป็นต้องเปลี่ยนแบบฟอร์มดังกล่าวบ่อยครั้ง จำเป็นต้องมีโปรแกรมสร้างไดนามิกสำหรับแบบฟอร์ม บทความนี้แนะนำเพียงระบบดังกล่าว ซึ่งใช้ฐานข้อมูลเพื่อบันทึกข้อมูลข้อกำหนดของฟอร์ม และใช้สคริปต์ ASP เพื่อสร้างโค้ด HTML และสคริปต์ของฟอร์มแบบไดนามิกเพื่อตรวจสอบอินพุตของฟอร์ม
1. กำหนดโครงสร้างตารางฐานข้อมูล
คุณสามารถเห็นแบบฟอร์มต่างๆ เช่น "แบบสำรวจรายสัปดาห์" บนเว็บได้บ่อยครั้ง หากมีโปรแกรมที่สร้างแบบฟอร์มและสคริปต์ตรวจสอบแบบไดนามิก ภาระงานในการสร้างแบบฟอร์มเหล่านี้จะลดลงอย่างมาก
ในการสร้างแบบฟอร์มแบบไดนามิกและตัวอย่างการตรวจสอบในบทความนี้ เราใช้ฐานข้อมูล Access เพื่อจัดเก็บข้อมูลข้อกำหนดเกี่ยวกับแบบฟอร์ม ในเวลาเดียวกัน เพื่อความง่าย ข้อมูลที่ป้อนโดยผู้ใช้ในแบบฟอร์มจะถูกบันทึกลงในฐานข้อมูลเดียวกันด้วย . การกำหนดแบบฟอร์มต้องใช้สองตาราง ตารางแรก (Definitons) ใช้เพื่อกำหนดฟิลด์อินพุตของฟอร์ม และตารางที่สอง (รายการ) จะบันทึกข้อมูลเพิ่มเติมเกี่ยวกับฟิลด์อินพุตแต่ละฟิลด์ เช่น รายการการเลือกของรายการการเลือก
ตาราง Definitons ประกอบด้วยฟิลด์ต่อไปนี้:
FieldName - ชื่อตัวแปรที่กำหนดให้กับฟิลด์อินพุตของฟอร์ม
ป้ายกำกับ - ป้ายกำกับข้อความ ข้อความข้อมูลที่แสดงด้านหน้าช่องป้อนข้อมูล
ประเภท - อักขระตัวเดียวซึ่งแสดงถึงรูปแบบของฟิลด์อินพุตของฟอร์มและประเภทของค่าอินพุตดังต่อไปนี้:
(t) กล่องป้อนข้อความ นั่นคือ < INPUT TYPE="TEXT" >
(n) กล่องใส่ข้อความ แต่ต้องใช้ค่าตัวเลข
(m) เนื้อหาบันทึกที่ใช้สำหรับการแสดงความคิดเห็นหรือข้อความจำนวนมากอื่น ๆ เป็นกล่องแก้ไขข้อความหลายบรรทัด
(b) ต้องป้อนข้อมูลเป็น "ใช่" หรือ "ไม่ใช่" ในการใช้งานนี้ ช่องทำเครื่องหมายจะถูกใช้เพื่อรับอินพุตนี้ โดยมีป้ายกำกับข้อความของช่องทำเครื่องหมายเป็น "ใช่" หากผู้ใช้เลือก ค่าที่ส่งคืนจะเป็น "เปิด"
(r) ปุ่มตัวเลือก
(l) กล่องรายการแบบหล่นลง
ต่ำสุด - ใช้ได้กับค่าอินพุตตัวเลขเท่านั้น โดยจะระบุค่าต่ำสุดไว้ที่นี่ ในตัวอย่างนี้ มีช่องป้อนตัวเลข "อายุ" ที่มีค่าต่ำสุดตั้งไว้ที่ 1
สูงสุด – ค่าของฟิลด์นี้สัมพันธ์กับแบบฟอร์มฟิลด์อินพุต สำหรับช่องป้อนตัวเลข จะแสดงค่าสูงสุดที่อนุญาต เช่น ค่าสูงสุดของ "อายุ" คือ 100 สำหรับกล่องป้อนข้อความ Max หมายถึงจำนวนอักขระสูงสุดที่อนุญาต สำหรับกล่องแก้ไขข้อความแบบหลายบรรทัด Max จะแสดงจำนวนบรรทัดข้อความในพื้นที่ที่มองเห็นได้
จำเป็น - ระบุว่าจำเป็นต้องป้อนข้อมูลหรือไม่ หากไม่ได้ป้อนค่าประเภทนี้ เครื่องมือตรวจสอบอินพุตจะรายงานข้อผิดพลาด ในแบบฟอร์ม ค่าที่ต้องป้อนจะมีเครื่องหมายดอกจันกำกับไว้ และผู้ใช้จะได้รับแจ้งในรูปแบบของเชิงอรรถว่าต้องป้อนค่าดังกล่าว
แบบฟอร์มตัวอย่างในบทความนี้เป็นแบบสอบถามโปรแกรมเมอร์ ASP คำจำกัดความของแบบฟอร์มในตาราง Definitons มีดังนี้:
FieldName Label Type Min Max Required
Name Name text (t) - 50 No
Age Age number (n) 1 100 No
Sex เพศ เดียว ปุ่มเลือก (r) - - ใช่
อีเมล ข้อความอีเมล (t) - - ใช่
ช่องรายการแบบเลื่อนลงภาษาโปรแกรมภาษา (l) - - ไม่มี
การใช้รายการเพื่อบันทึกข้อมูลเพิ่มเติมบางอย่างที่กำหนดไว้ในช่องป้อนข้อมูล ในตัวอย่างนี้ "เพศ ใช้สำหรับค่าอินพุตสองค่า" และ "ภาษา" รายการตารางนั้นง่ายมากและประกอบด้วยสามฟิลด์ต่อไปนี้เท่านั้น:
FieldName - ฟิลด์อินพุตของแบบฟอร์มใด, บันทึกปัจจุบันเป็นของ
ค่า - ค่าของ
ป้ายกำกับการเลือก - ข้อความแจ้งของการเลือกที่ผู้ใช้เห็น
ฟิลด์อินพุต "เพศ" สามารถป้อนได้จากสองค่าให้เลือกเท่านั้น: "ชาย" หรือ "หญิง" "ภาษา" แสดงรายการภาษาการเขียนโปรแกรมหลายภาษาที่สามารถนำไปใช้กับสภาพแวดล้อม ASP รวมถึง: VBScript, JavaScript, C, Perl และ "อื่นๆ"
ตารางที่สาม "บันทึก" จะบันทึกเนื้อหาที่ส่งโดยผู้ใช้ นอกจากนี้ยังมีสามฟิลด์ที่สอดคล้องกับการส่งโดยผู้ใช้:
บันทึก - ประเภทหมายเหตุ การป้อนข้อมูลของผู้ใช้ที่บันทึกในรูปแบบของสตริงการสืบค้น
สร้างแล้ว – วันที่และเวลาที่ผู้ใช้ส่งแบบฟอร์ม RemoteIP - ที่อยู่ IP ของผู้ส่งแบบฟอร์ม
ในการใช้งานจริง อาจจำเป็นต้องรวบรวมข้อมูลเพิ่มเติมเกี่ยวกับผู้ใช้ เพื่อความง่าย ตัวอย่างนี้จะบันทึกข้อมูลเพิ่มเติมเพียงสองรายการเท่านั้น ได้แก่ เวลาที่ส่งและที่อยู่ IP ของผู้ใช้
2. การเตรียมการ
หลังจากเสร็จสิ้นการกำหนดโครงสร้างข้อมูลและแบบฟอร์มข้างต้นแล้ว คุณสามารถเขียนสคริปต์ได้ งานของสคริปต์คือการสร้างแบบฟอร์มและประมวลผลแบบฟอร์มที่ผู้ใช้ส่ง
ไม่ว่าจะเป็นการสร้างหรือการประมวลผลแบบฟอร์ม กระบวนการ (งาน) สามประการต่อไปนี้มีความสำคัญ: สิ่งแรกคือการกำหนดประเภทการตรวจสอบ เมื่อสร้างแบบฟอร์ม ค่าประเภทการตรวจสอบจะได้รับผ่านสตริงการสืบค้น และเมื่อประมวลผลแบบฟอร์ม จะได้รับฟิลด์ที่ซ่อนอยู่จากแบบฟอร์ม มีวิธีการตรวจสอบแบบฟอร์มสี่ประเภทที่โปรแกรมรองรับ: ไม่มีการตรวจสอบ, การตรวจสอบ JavaScript ฝั่งไคลเอ็นต์, การตรวจสอบสคริปต์ ASP ฝั่งเซิร์ฟเวอร์ และการตรวจสอบทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ (ชื่อรหัสคือ 0 ถึง 3 ตามลำดับ) หากไม่มีการระบุวิธีการรับรองความถูกต้องที่ถูกต้องในสตริงการสืบค้น วิธีการรับรองความถูกต้องที่สี่จะเป็นค่าเริ่มต้น วิธีการประมวลผลการตรวจสอบนี้ช่วยให้เราสามารถใช้ระบบการสร้างและประมวลผลแบบฟอร์มนี้ได้อย่างยืดหยุ่น เมื่อไคลเอนต์ห้ามไม่ให้ใช้การตรวจสอบ JavaScript กระบวนการตรวจสอบสามารถทำได้บนฝั่งเซิร์ฟเวอร์เท่านั้น นี่คือโค้ดสำหรับกำหนดประเภทการตรวจสอบ:
ตรวจสอบประเภทการตรวจสอบ
นี่คือตัวอย่างข้อมูลคำพูด:
iValType = Request.QueryString("val")
ถ้า IsNumeric(iValType) = False แล้ว iValType = 3
หาก iValType > 3 หรือ iValType < 0 ดังนั้น iValType =3
ภารกิจที่สองคือการเปิดการเชื่อมต่อฐานข้อมูลและสร้างอ็อบเจ็กต์ชุดระเบียนสองรายการ: อ็อบเจ็กต์ RS ซึ่งเป็นอ็อบเจ็กต์ชุดระเบียนหลักในโปรแกรมนี้ ใช้เพื่อดำเนินการตารางคำจำกัดความ อ็อบเจ็กต์ RSList ซึ่งส่วนใหญ่ใช้เพื่ออ่านข้อมูลจากตารางรายการ โปรแกรมตัวอย่างมีวิธีการเชื่อมต่อฐานข้อมูลสองวิธี: ใช้ ODBC DSN หรือไม่ใช้ ODBC DSN (เมื่อใช้ DSN คุณต้องสร้าง DSN ชื่อ Dynamic ก่อน และโค้ดสำหรับใช้ DSN เพื่อเชื่อมต่อกับฐานข้อมูลได้ถูกใส่เครื่องหมายความคิดเห็นไว้)
ภารกิจที่สามคือการแสดงผลโค้ด HTML แบบคงที่ก่อน (และหลัง) การสร้าง (หรือการประมวลผล) สคริปต์ของฟอร์ม เช่น <HEAD>< /HEAD> และปล่อย RS, RSList และอ็อบเจ็กต์อื่น ๆ ที่ถูกครอบครองเมื่อสคริปต์สิ้นสุดลง .
นอกจากโค้ดที่ทำหน้าที่ข้างต้นให้เสร็จสิ้นแล้ว ยังมีเพจสองประเภทที่อาจสร้างขึ้นโดยสคริปต์ ASP ที่เหลือในแอปพลิเคชันตัวอย่าง: แบบฟอร์มคำถาม (ดูรูปด้านบน) และหน้าผลลัพธ์ที่ปรากฏหลังจากแบบฟอร์มคือ ส่งแล้ว (ส่วนหลังมีหน้าที่บันทึกผลลัพธ์ที่ผู้ใช้ส่งมาด้วย) วิธีที่ง่ายที่สุดในการพิจารณาว่าส่วนใดของสคริปต์ที่จะรันคือการตรวจสอบว่าได้ส่งแบบฟอร์มแล้วหรือไม่ หากเป็นเช่นนั้น ให้ดำเนินการกับแบบฟอร์ม หากไม่เป็นเช่นนั้น ให้สร้างแบบฟอร์ม
มันสร้างแบบฟอร์มหรือกำลังประมวลผลแบบฟอร์มหรือไม่
ต่อไปนี้เป็นตัวอย่างคำพูด:
ถ้า Len(Request.Form) = 0 แล้ว
'สร้างฟอร์ม...สักหน่อย...
อื่น
'ประมวลผลแบบฟอร์ม...เล็กน้อย...
สิ้นสุดถ้า
3 สร้างแบบฟอร์มแบบไดนามิก
เมื่อสร้างแบบฟอร์ม โปรแกรมจะกำหนดบันทึกตามช่องป้อนข้อมูลแต่ละช่องในตาราง Definitons และสร้างโค้ด HTML และโค้ด JavaScript ของแบบฟอร์มที่สอดคล้องกันตามลำดับ สิ่งแรกที่จะสร้างขึ้นในโค้ด HTML คือแท็กข้อความ:
นี่คือตัวอย่างคำพูด:
sHTML = sHTML & vbTab & "< TR >" & vbCrLf & vbTab & vbTab
sHTML = sHTML & "< TD VALIGN=" & Chr(34) & "ด้านบน" & Chr(34)
sHTML = sHTML & ">" & vbCrLf & vbTab & vbTab & vbTab
sHTML = sHTML & "< B >" & RS.Fields("ป้ายกำกับ")
จากนั้นโปรแกรมจะตรวจสอบว่าช่องป้อนข้อมูลปัจจุบันต้องการอินพุตหรือไม่ หากจำเป็น ให้เพิ่มเครื่องหมายดอกจันหลังข้อความป้ายกำกับ (ระบุว่าต้องป้อนค่า) และสำหรับค่าที่ต้องป้อน จะต้องสร้างโค้ด JavaScript ที่เกี่ยวข้องเพื่อตรวจสอบ สำหรับปุ่มตัวเลือกหรือรายการที่เลือก จะมีการตรวจสอบเพิ่มเติมว่าผู้ใช้เลือกตัวเลือกจริงหรือไม่ สำหรับประเภทอินพุตอื่นๆ ทั้งหมด เพียงตรวจสอบว่าค่าอินพุตไม่ว่างเปล่า
ถัดจากป้ายกำกับข้อความคือองค์ประกอบอินพุตของแบบฟอร์ม และโค้ด HTML สำหรับองค์ประกอบเหล่านี้ถูกสร้างขึ้นตามประเภทและคุณลักษณะที่ระบุในตารางคำจำกัดความ ขั้นตอนต่อไปคือการสร้างโค้ด JavaScript ที่ดำเนินงานการตรวจสอบฝั่งไคลเอ็นต์โดยอิงตามข้อกำหนดค่าอินพุต สำหรับตัวอย่างนี้ เฉพาะค่าตัวเลขเท่านั้นที่ต้องตรวจสอบเพิ่มเติมเพื่อให้แน่ใจว่าอินพุตของผู้ใช้เป็นตัวเลขจริง ๆ และค่าตัวเลขอยู่ระหว่างค่าสูงสุดและต่ำสุดที่อนุญาต หลังจากสร้างโค้ดข้างต้นแล้ว คุณสามารถสิ้นสุดแถวของตาราง (นั่นคือ ฟิลด์อินพุต) และดำเนินการประมวลผลเรกคอร์ดถัดไปของตารางคำจำกัดความต่อไปได้ เมื่อบันทึกฐานข้อมูลทั้งหมดได้รับการประมวลผลแล้ว ขั้นตอนต่อไปคือการเพิ่มโค้ด HTML สำหรับปุ่ม "ส่ง" และปุ่ม "ล้าง" หากคุณมองจากมุมอื่น หน้าที่ของโปรแกรมที่นี่คือการสร้างแต่ละฟิลด์อินพุตตามบันทึกฐานข้อมูล แต่ละฟิลด์อินพุตจะใช้พื้นที่หนึ่งแถวของตาราง และแต่ละแถวของตารางจะมีสองเซลล์ โดยเซลล์แรกจะถูกใช้เพื่อแสดง ป้ายข้อความและหน่วยที่สองแสดงองค์ประกอบอินพุตเอง (ดูรหัส dForm.asp)
หลังจากกระบวนการข้างต้นเสร็จสิ้น รหัส HTML ของแบบฟอร์มและฟังก์ชัน JavaScript การตรวจสอบความถูกต้องจะถูกบันทึกไว้ในตัวแปร sHTML และ sJavaScript ตามลำดับ ก่อนที่จะเขียนเนื้อหาเหล่านี้ลงในเพจ โปรแกรมจะตรวจสอบว่าไคลเอนต์ต้องการการตรวจสอบ JavaScript หรือไม่ หากไม่ต้องการการตรวจสอบดังกล่าว ตัวแปร sJavaScript จะถูกล้าง:
ถ้า iValType = 0 หรือ iValType = 2 จากนั้น sJavaScript = ""
หลังจากส่งออกแท็ก BODY แล้ว โปรแกรมส่งออกฟังก์ชัน JavaScript ต่อไปนี้:
ต่อไปนี้เป็นส่วนของเครื่องหมายคำพูด:
< ภาษาสคริปต์ = "จาวาสคริปต์" >
-
ฟังก์ชั่นตรวจสอบ (TheForm) {
//การตรวจสอบแบบฟอร์มลูกค้า
< %=sจาวาสคริปต์% >
กลับเป็นจริง;
-
ฟังก์ชั่น CheckRadio (objRadio) {
//ไม่ว่าจะเลือกค่าในปุ่มตัวเลือกหรือไม่
สำหรับ (var n = 0; n < objRadio.length; n++){
ถ้า (objRadio [n]. ตรวจสอบแล้ว) {
กลับเป็นจริง;
-
-
กลับเท็จ;
-
รายการตรวจสอบฟังก์ชัน (objList) {
//ไม่ว่าจะเลือกค่าในรายการตัวเลือกหรือไม่
สำหรับ (var n = 1; n < objList.length; n++){
ถ้า (objList.options[n].selected){
กลับเป็นจริง;
-
-
กลับเท็จ;
-
-
</ /สคริปต์ >
หากไคลเอนต์ไม่ต้องการการตรวจสอบ JavaScript ฟังก์ชันตรวจสอบจะเหลือคำสั่ง "return true" ฟังก์ชัน JavaScript แบบคงที่สองรายการสุดท้าย (CheckRadio และ CheckList) ในโค้ดด้านบนใช้เพื่อตรวจสอบปุ่มตัวเลือกและกล่องรายการแบบหล่นลง ฟังก์ชันตรวจสอบจะเรียกใช้เมื่อช่องป้อนข้อมูลทั้งสองนี้จำเป็นต้องได้รับการตรวจสอบ
ตอนนี้คุณสามารถเริ่มเขียนแบบฟอร์มลงในเพจได้แล้ว:
< FORM ACTION="./dform.asp" METHOD="POST" NAME="MyForm" onSubmit="return validate(this)" >
ที่นี่ เฉพาะเมื่อฟังก์ชันตรวจสอบส่งคืนเท่านั้น จริง จากนั้นจึงดำเนินการส่งแบบฟอร์ม ดังนั้น เมื่อปิดฟังก์ชันการตรวจสอบ JavaScript ฝั่งไคลเอ็นต์ ฟังก์ชันตรวจสอบความถูกต้องจะคืนค่าเป็นจริงโดยอัตโนมัติ
สิ่งต่อไปที่ต้องเพิ่มคือฟิลด์ที่ซ่อนอยู่ที่เรียกว่าวาล ตามที่กล่าวไว้ก่อนหน้านี้ ค่านี้บ่งชี้ถึงโหมดการตรวจสอบความถูกต้องของแบบฟอร์ม
< INPUT TYPE="HIDDEN" NAME="val" VALUE="< %=iValType% >" >
เมื่อผู้ใช้ส่งแบบฟอร์ม สคริปต์การประมวลผลจะใช้ค่านี้เพื่อกำหนดว่าจะดำเนินการตรวจสอบฝั่งเซิร์ฟเวอร์หรือไม่
จากนั้นผลลัพธ์จะเป็นเครื่องหมายตารางและชื่อตาราง ชื่อจะถูกบันทึกไว้ในตัวแปร sTitleLabel ซึ่งค่าจะเริ่มต้นเมื่อสคริปต์เริ่มทำงาน:
นี่คือตัวอย่างราคา:
< เส้นขอบตาราง="0" >
<TR>
< TD COLSPAN="2" ALIGN="CENTER" >
< H2 >< %=sTitleLable% >< /H2 >
</ /ทีดี >
</ /TR >
เพื่อเป็นการวัดการปรับปรุง คุณสามารถเพิ่ม FormID ของฟิลด์ลงในตารางคำจำกัดความ รายการ และบันทึกได้ FormID ระบุแบบฟอร์มโดยไม่ซ้ำกัน เพื่อให้โปรแกรมสามารถกำหนดหลายรูปแบบในเวลาเดียวกัน และบันทึกผลการตอบสนองของผู้ใช้หลายรูปแบบ สำหรับ sTitleLabel ด้านบน เราสามารถใช้ตารางอื่น (เช่น แบบฟอร์ม) เพื่อบันทึกได้
ตามเครื่องหมายตารางและชื่อตาราง โปรแกรมจะแสดงรูปแบบ HTML และโค้ดสำหรับปุ่ม "ส่ง" และ "ล้าง" หลังจากนี้ โปรแกรมจะตรวจสอบว่าสตริง sHTML มี "*" หรือไม่ แสดงว่าต้องมีเนื้อหาที่ต้องป้อนในแบบฟอร์ม ในขณะนี้ เชิงอรรถจะส่งออกเพื่ออธิบายความหมายของเครื่องหมายดอกจัน
นี่คือคำพูด:
< %=sHTML% >
<TR>
< TD COLSPAN="2" ALIGN="CENTER" >
< INPUT TYPE="ส่ง" VALUE="ส่งแบบฟอร์ม" > < INPUT TYPE="รีเซ็ต" VALUE="ล้าง" >
</ /ทีดี >
-
'ไม่ว่าจะมีฟิลด์แบบฟอร์มที่ต้องป้อนข้อมูลหรือไม่ ถ้ามี ให้ส่งออกเชิงอรรถของฟอร์มเพื่ออธิบายความหมายของ '*'
ถ้า InStr(sHTML,"*") แล้ว
-
</ /TR >
< TD COLSPAN="2" ALIGN="CENTER" >
< FONT SIZE="2">หมายเหตุ: จำเป็นต้องมีค่าที่มีเครื่องหมายดอกจัน </FONT>
</ /ทีดี >
</ /TR >
-
สิ้นสุดถ้า
-
</ /ตาราง >
</ /แบบฟอร์ม>
จนถึงขณะนี้ งานสร้างแบบฟอร์มเสร็จสมบูรณ์แล้ว
4. การประมวลผลผลลัพธ์การส่ง
งานที่เหลือของสคริปต์ ASP คือการประมวลผลแบบฟอร์มฝั่งเซิร์ฟเวอร์ รวมถึงการตรวจสอบความถูกต้อง บันทึกผลลัพธ์ลงในฐานข้อมูล และการแสดงหน้า "ความสำเร็จ/ความล้มเหลวในการส่ง" ตัวแปรสตริง sBadForm ถูกใช้ในส่วนนี้ของรหัสตรวจสอบแบบฟอร์ม และโปรแกรมใช้เพื่อบันทึกข้อมูลข้อผิดพลาด หาก sBadForm ว่างเปล่าเมื่อสิ้นสุดกระบวนการตรวจสอบ แสดงว่าแบบฟอร์มที่ผู้ใช้ส่งมานั้นถูกต้องตามกฎหมาย มิฉะนั้น การส่งแบบฟอร์มจะถูกปฏิเสธและ sBadForm จะถูกส่งกลับไปยังเบราว์เซอร์
ไม่ว่าแบบฟอร์มของคุณจะใช้โหมดการตรวจสอบความถูกต้องแบบใด แนวทางปฏิบัติที่ดีคือตรวจสอบ HTTP_REFERER การตรวจสอบนี้ป้องกันการขโมยสคริปต์ หากต้องการตรวจสอบว่า POST บางรายการมาจากหน้าหรือสคริปต์จากเว็บไซต์นี้หรือไม่ เพียงเปรียบเทียบตัวแปรเซิร์ฟเวอร์สองตัว:
นี่คือตัวอย่างราคา:
ถ้า InStr(Request.ServerVariables("HTTP_REFERER"), _
Request.ServerVariables("HTTP_HOST")) = 0 จากนั้น
sBadForm = "<LI>แบบฟอร์มถูกส่งมาจากตำแหน่งที่ไม่ถูกต้อง" & vbCrlf
สิ้นสุดถ้า
หากฟิลด์ที่ซ่อนอยู่ของแบบฟอร์มระบุว่าต้องดำเนินการตรวจสอบฝั่งเซิร์ฟเวอร์ โปรแกรมจะข้ามบันทึกฐานข้อมูลข้อกำหนดของแบบฟอร์ม และดำเนินการตรวจสอบที่เกี่ยวข้อง กระบวนการนี้คล้ายกับการสร้างแบบฟอร์มมาก ยกเว้นว่าคราวนี้โปรแกรมจะตรวจสอบ แบบฟอร์มและเพิ่มข้อมูลค่าอินพุตที่ไม่ถูกต้องไปที่ เพียงไปที่ sBadForm ดู dForm.asp สำหรับโค้ดเฉพาะ
ในที่สุดโปรแกรมจะตรวจสอบว่า sBadForm ว่างเปล่าหรือไม่ หากไม่ว่างเปล่า การส่งแบบฟอร์มจะถูกปฏิเสธและ sBadForm จะถูกเขียนไปยังเบราว์เซอร์ หาก sBadForm ว่างเปล่า ให้เพิ่มระเบียนลงในตาราง Records เพื่อบันทึกข้อมูลแบบฟอร์ม จำเป็นต้องลบฟิลด์ที่ซ่อนอยู่ก่อนที่จะบันทึกเนื้อหาของแบบฟอร์ม ฟิลด์ที่ซ่อนไว้นี้จะเป็นฟิลด์อินพุตแรกของแบบฟอร์มเสมอ:
ต่อไปนี้เป็นส่วนของเครื่องหมายคำพูด:
ถ้า Len(sBadForm) = 0 แล้ว
RS.เปิด "บันทึก", DB, 3, 2, &H0002
RS.AddNew
RS.Fields("Record") = Mid(Request.Form, InStr(Request.Form, "&") + 1)
RS.Fields("สร้างแล้ว") = ตอนนี้()
RS.Fields("RemoteIP") = Request.ServerVariables("REMOTE_ADDR")
RS.อัพเดต
Response.Write("< H1 >ขอบคุณ.< /H1 >")
RS.ปิด
อื่น
Response.Write("< H1 >การส่งแบบฟอร์มล้มเหลว< /H1 >")
การตอบกลับเขียน (vbCrLf & sBadForm)
สิ้นสุดถ้า
สิ้นสุดถ้า
เพียงเท่านี้สำหรับการประมวลผลแบบฟอร์มฝั่งเซิร์ฟเวอร์ ขึ้นอยู่กับว่ามีแบบฟอร์มที่ส่งมาหรือไม่ เราสามารถสรุปโค้ดการสร้างแบบฟอร์มก่อนหน้าและโค้ดประมวลผลแบบฟอร์มที่นี่ด้วยคำสั่ง If เพื่อให้ทั้งสองส่วนของสคริปต์ใช้โค้ดทั่วไปร่วมกัน เช่น ส่วนหัวของเอกสาร HTML การสร้างวัตถุฐานข้อมูลและการปล่อยทรัพยากร
โดยรวมแล้ว dForm.asp มีเพียงฟังก์ชันหลักที่จำเป็นสำหรับการสร้างและตรวจสอบแบบฟอร์มแบบไดนามิก และไม่สนใจการจัดการปัญหาโดยละเอียดต่างๆ มากมาย ตัวอย่างเช่น ปัญหาหลายแบบฟอร์มที่กล่าวถึงก่อนหน้านี้: การเพิ่มตารางเพื่อจัดการหลายแบบฟอร์มทำให้สคริปต์สามารถจัดการ สร้าง และประมวลผลแบบฟอร์มที่ระบุได้ ข้อบกพร่องที่เห็นได้ชัดอีกประการหนึ่งคือความสามารถในการเพิ่ม ลบ และอัปเดตข้อมูลที่กำหนดในแบบฟอร์ม รวมถึงการเข้าถึงข้อมูลผลลัพธ์ที่ผู้ใช้ส่งมา ฟังก์ชันดังกล่าวสามารถนำไปใช้ในโปรแกรมแบบสแตนด์อโลน และในกรณีส่วนใหญ่สามารถทำให้เป็น แอปพลิเคชันแบบดั้งเดิม (แอปพลิเคชันที่ไม่มีโครงสร้าง B/S) สุดท้ายนี้ ประเภทฟิลด์อินพุตที่ dForm.asp รองรับก็มีข้อจำกัดเช่นกัน ในทางปฏิบัติ อาจมีข้อกำหนดการป้อนแบบฟอร์มอื่นๆ เช่น กล่องป้อนที่อยู่อีเมลเฉพาะ อย่างไรก็ตาม สำหรับเว็บไซต์ที่อัปเดตแบบฟอร์มบ่อยครั้ง การสร้างแบบฟอร์มแบบไดนามิกและฟังก์ชันการตรวจสอบความถูกต้องแบบไดนามิกที่กล่าวถึงในบทความนี้มีประโยชน์มากจริงๆ