بناء صفحات ويب بـ ASP
ASP (Active Server Pages) تقنية ويب من مايكروسوفت تعمل على الخادم عبر 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، بل استخدم المعاملات (Parameters)، وإلا فستحدث ثغرة حقن SQL.
أخطاء شائعة
- **عرض مدخلات المستخدم دون ترميز:** استخدم دائمًا `Server.HTMLEncode`.
- **بناء نص SQL من مدخلات المستخدم:** يسمح ذلك بحقن SQL. استخدم أوامر بمعاملات.
- **عدم تفعيل ميزة ASP في IIS:** تظهر الصفحة كنص مصدري بدلًا من النتيجة. تحقق من تثبيت الميزة أولًا.
الخطوات التالية
في المشاريع الجديدة، فكّر في ASP.NET Core لأنه مدعوم ومحدَّث باستمرار. أما الأنظمة القائمة على ASP فينبغي ترحيلها تدريجيًا مع إضافة إجراءات الأمان.
الخلاصة
تُشغّل ASP الكود على الخادم عبر IIS وتدمجه مع HTML. النقطتان الأساسيتان هما ترميز القيم المعروضة، واستخدام المعاملات عند التعامل مع قاعدة البيانات.