สอนเขียนเว็บด้วย ASP
ASP (Active Server Pages) เป็นเทคโนโลยีเว็บของ Microsoft ที่รันบนเซิร์ฟเวอร์ IIS โดยหน้าเว็บผสมโค้ดฝั่งเซิร์ฟเวอร์กับ HTML ปัจจุบันมีการพัฒนาต่อด้วย ASP.NET Core แต่ระบบเก่าจำนวนมากยังใช้ ASP แบบคลาสสิก (VBScript) บทความนี้อธิบายหลักการทำงาน การรับค่าจากฟอร์ม และแนวทางปฏิบัติที่ควรรู้
หมายเหตุการทดสอบ: เครื่องที่ใช้เขียนบทความนี้ไม่มี IIS และ ASP จึงยังไม่ได้รันโค้ดในบทความ ก่อนใช้งานให้ติดตั้ง IIS พร้อม ASP แล้วทดสอบเองก่อนนำไปใช้จริง
สิ่งที่ต้องเตรียม
- Windows ที่เปิดใช้ IIS (Internet Information Services) และฟีเจอร์ ASP
- โฟลเดอร์เว็บใน IIS เช่น `C:\inetpub\wwwroot\demo`
ภาพรวมการทำงาน
หน้า ASP แรก
สร้างไฟล์ `hello.asp` แล้วพิมพ์โค้ดนี้
<%@ Language="VBScript" %>
<html>
<body>
<h1>สวัสดี ASP</h1>
<p>เวลาบนเซิร์ฟเวอร์: <%= Now() %></p>
</body>
</html>
`<% ... %>` คือโค้ดที่รันบนเซิร์ฟเวอร์ และ `<%= ... %>` พิมพ์ค่าลงในหน้า HTML ที่ส่งกลับไปยังเบราว์เซอร์
รับค่าจากฟอร์ม
<%@ Language="VBScript" %>
<%
Dim name
name = Request.Form("name")
%>
<form method="post" action="greet.asp">
ชื่อ: <input type="text" name="name">
<input type="submit" value="ส่ง">
</form>
<% If name <> "" Then %>
<p>ยินดีต้อนรับ <%= Server.HTMLEncode(name) %></p>
<% End If %>
`Request.Form` อ่านค่าจากฟอร์ม และ `Server.HTMLEncode` ป้องกันการแทรกโค้ด HTML หรือสคริปต์อันตรายเข้าไปในหน้า
เชื่อมต่อฐานข้อมูล
ระบบ ASP คลาสสิกมักใช้ ADO เชื่อมฐานข้อมูล แต่ควรใช้พารามิเตอร์แทนการต่อข้อความ SQL โดยตรงเพื่อป้องกัน SQL Injection
ข้อผิดพลาดที่มักพบ
- **แสดงค่าที่ผู้ใช้กรอกโดยไม่เข้ารหัส:** ใช้ `Server.HTMLEncode` เสมอ
- **ต่อข้อความ SQL จากค่าที่ผู้ใช้กรอก:** ทำให้เกิด SQL Injection ควรใช้ Command กับพารามิเตอร์
- **ไม่ได้เปิดฟีเจอร์ ASP ใน IIS:** หน้าจะแสดงโค้ดแทนผลลัพธ์ ให้ตรวจการติดตั้งฟีเจอร์ก่อน
ขั้นต่อไป
หากเป็นโปรเจกต์ใหม่ ควรพิจารณา ASP.NET Core ที่ได้รับการดูแลต่อเนื่อง ส่วนระบบเดิมที่ใช้ ASP อยู่ ควรย้ายค่อยเป็นค่อยไปและเพิ่มการป้องกันความปลอดภัยให้ครบถ้วน
สรุป
ASP รันโค้ดบนเซิร์ฟเวอร์ผ่าน IIS และผสมกับ HTML ได้โดยตรง จุดสำคัญคือการเข้ารหัสค่าที่แสดงผลและการใช้พารามิเตอร์กับฐานข้อมูลเพื่อความปลอดภัย