AASP هو تطبيق تم تطويره بواسطة Microsoft لاستبدال برامج البرمجة النصية CGI. يمكن أن تتفاعل مع قواعد البيانات والبرامج الأخرى. هنا ، سيعطيه المحرر بعض المناقشات البسيطة. يتحدث المحتوى التالي بشكل أساسي عن المبادئ الأساسية لرمز كتابة ASP.
1. إعلان متغيرات vbscript
في ASP ، يتم تزويد VBScript بدعم قوي ويمكنه دمج وظائف وأساليب VBScript بسلاسة ، مما يوفر راحة كبيرة لتوسيع وظائف ASP الحالية. نظرًا لأن مفهوم الأنواع المتغيرة قد تم توضيحه في ASP ، فإن العديد من المبرمجين اعتادوا على عدم إعلان متغيرات VBScript أثناء التفاعل بين ASP و VBScript ، مما يزيد من عبء التحليل للخادم وبالتالي يؤثر على سرعة طلب استجابة الخادم.
في ضوء ذلك ، يمكننا إجبار المستخدم على إجراء إعلانات متغيرة في VBScript تمامًا مثلنا نجبر المستخدم على إجراء إعلانات متغيرة في VB. تتمثل طريقة التنفيذ في وضع <٪ خيار صريح ٪> في بداية خط برنامج ASP.
2. تشفير عنوان عنوان URL
عندما نستخدم ASP لإنشاء عنوان عنوان URL ديناميكيًا مع المعلمات والقفز ، من الطبيعي تحليل IE ، ولكن عند تصفح NetScrape ، هناك أخطاء على النحو التالي:
HTTP Error 400 400 طلب سيء بسبب بناء الجملة المشوه ، لا يمكن فهم الطلب من قبل الخادم. يجب على العميل عدم تكرار الطلب دون تعديلات.
الحل هو استخدام طريقة urlencode لكائن الخادم المدمج في ASP إلى URL ترميز معلمات URL التي تم إنشاؤها. المثال على النحو التالي:
<٪ url = "xur.asp" var1 = "username =" & server.urlencode ("xur") var2 = "& company =" & server.urlencode ( & var1 & var2 & var3 ٪>3. امسح الكائن
بعد استخدام الكائن ، استخدم أولاً الطريقة الإغلاق لتحرير موارد النظام التي يشغلها الكائن ؛ ثم اضبط قيمة الكائن على "لا شيء" لتحرير ذاكرة الكائن. في ذلك الوقت ، تحطمت IIS من خلال إنشاء أكثر من 100 Recordets على صفحة بدون كائنات واضحة. يستخدم الرمز التالي محتوى قاعدة البيانات لإنشاء قائمة منسدلة. مثال الكود كما يلي:
<٪ mydsn = "dsn = xur ؛ uid = xur ؛ pwd = xur" mysql = "select * من المؤلفين حيث au_id <100" set conntemp = server.createObject ("adodb.connection") mysql conntemp.close set conntemp = nothing response.4. إنشاء استعلام SQL باستخدام السلاسل
لا يؤدي استخدام السلاسل لإنشاء استعلامات إلى تسريع سرعة تحليل الخادم. على العكس من ذلك ، فإنه سيزيد أيضًا من وقت تحليل الخادم. ولكن لا يزال من المستحسن استخدام السلاسل بدلاً من عبارات الاستعلام البسيطة للاستعلام. ميزة ذلك هي أنه يمكن أن يكتشف مشكلة البرنامج بسرعة ، وبالتالي تسهيل البرنامج وتوليده بكفاءة. الأمثلة على النحو التالي:
<٪ mysql = "" select * "mysql = mysql &" من الناشرين "mysql = mysql &" state = 'ny' "response.write mysql set RSTIMP =
5. استخدم الحالة لتحديد الشرط
عند الاختيار الشرطي ، حاول استخدام عبارات الحالة وتجنب استخدام البيانات. يمكن أن يؤدي استخدام عبارات الحالة إلى جعل البرنامج قابل للتدفق وتنفيذ أسرع مما لو كان البيانات. الأمثلة على النحو التالي:
<٪ لـ i = 1 to 1000 n = i respose.write addSuffix (n) & "<br>" next ٪> <٪ function addSuffix (num) numpart = right (num ، 1) حدد حالة numpart "1" END IF CASE "3" if instr (num ، "13") ثم num = num و "th" else num = num & "rd" end if case "4" num = num & "th" case num = num & "th" end select addsuffix = num end function ٪>
6. استخدم الثوابت المحددة في ملف Adovbs.inc لفتح مجموعة السجلات
عند فتح مجموعة سجلات ، يمكنك تحديد نوع المؤشر ونوع القفل الذي يفتحه مجموعة السجل.
هناك بعض الثوابت المحددة في ملف Adovbs.inc لتحديد هذه الأنواع. يتم حفظ ملف Adovbs.inc في دليل/inetpub/iissamples/iisamples. فيما يلي بعض أنواع المؤشر بشكل شائع الاستخدام وأنواع القفل.
نوع المؤشر:
نوع القفل:
<!-#include virtual = "/adovbs.inc"-> <٪ connectme = "dsn = xur ؛ uid = xur ؛ pwd = xur" sqltemp = "select * from publishers where name = 'xur'" set rstemp = server.createObject استجابة. write rstemp.recordcount & "السجلات في <br>" & sqltemp rstremp.close set rstremp = none ٪>
7. تجنب تعريف الكائن في ملف Global.asa
نظرًا لأن المحتويات في ملف Global.asa يمكن الرجوع إليها من قبل جميع الملفات في الموقع ، مما لا شك فيه ، يمكن أن يحدد تحديد الكائنات في ملف Global.asa الكثير من الازدواجية.
على سبيل المثال ، في وظيفة Application_onstart في Global.asa ، يتم التعريف التالي:
<٪ application_onstart set application ("theconn") = server.createObject ("adodb.connection") end sub ٪> ؛يتيح لك ذلك إجراء مراجع مماثلة في أي رمز على الموقع:
<٪ mysql = "SELECT * من الناشرين حيث state = 'xur' SET RSTMP = Application (" theconn "). تنفيذ (mySQL) ٪>وبالمثل ، يمكن إنشاء كائن مجموعة السجلات في وظيفة session_onstart
<٪ SUBS_ONSTART SET SESSION ("RSTMAP") = server.createObject ("adodb.recordset") End Sub ٪>ثم ، يتم إجراء الاقتباسات التالية في الموقع:
<٪ mysql = "SELECT * من الناشرين حيث STATE = 'Xur' SET SET (
ومع ذلك ، فإن القيام بذلك أيضًا له تأثير سلبي كبير. نظرًا لأن كل من متغيرات التطبيق والجلسة تنشر فقط الموارد المحتلة عند إغلاق موقع الويب ، فإن معلمات الجلسة ستضيع الكثير من الذاكرة غير الضرورية ، وفي هذا الوقت يصبح متغير التطبيق عنق الزجاجة في أداء الخادم.
حل:
قم بإنشاء صفحة ASP لتحديد الكائنات ، وإدخال صفحة ASP هذه على الصفحة حيث تحتاج هذه الكائنات إلى استدعاء. على افتراض أنه يتم تعريف اسم صفحة ASP للكائن المحدد. ASP ، يمكن تقديم الصفحة عن طريق إضافة العبارة التالية إلى صفحة ASP المقابلة.
<!-#تضمين Virtual = "/define.asp"->
عند تقديم الصفحات ، من الأفضل عدم تضمين بيان <٪@language = "vbscript" ٪> في ملف ASP المراد تقديمه. لأنه في ملف ASP ، لا يمكن أن يكون هناك سوى لغة تحليل نصية واحدة محددة بواسطة @.
8. حماية السلامة
يوفر ASP آلية جيدة لحماية التعليمات البرمجية ، ويتم تنفيذ جميع رمز ASP على جانب الخادم ويعيد فقط نتيجة تنفيذ رمز العميل. ومع ذلك ، في الإصدار القديم من IIS ، يمكنك عرض الكود المصدري لـ ASP بعد اسم الملف :: $ ، والذي يقع بالفعل ضمن نطاق أمان خادم الويب وليس ضمن نطاق هذه المقالة. فيما يلي احتياطات أمان بسيطة.
على الرغم من أنه يوصى بتقديم الملفات باستخدام INC ASP كملحق ، إلا أنه لا يزال يوصى باستخدام ASP كملحق لتقديم الملفات هنا. عندما يتم تشغيل هذه الرموز على خادم ويب مع آلية أمان سيئة ، يمكنك تصفح محتويات الملف المستورد ببساطة عن طريق إدخال شريط العناوين (Inc هو الامتداد). هذا لأنه على خادم الويب ، إذا لم يتم تعريف مكتبة اتصال ديناميكية تحل نوعًا معينًا (مثل INC) ، يتم عرض الملف في التعليمات البرمجية المصدر.
لا تضع ملف قاعدة البيانات داخل بنية موقع الويب ، بحيث عندما يحصل شخص ضار على مسار قاعدة البيانات ، يمكنه بسهولة الحصول على قاعدة البيانات ثم تغيير محتوى قاعدة البيانات بشكل تعسفي. يتمثل النهج الأفضل في إنشاء DSN (اسم مصدر التاريخ) لقاعدة البيانات ، والوصول إلى DSN مباشرة عند الوصول إلى قاعدة البيانات.
من خلال هذه المقالة ، هل لديك أي فهم لترميز ASP؟ أتمنى أن تساعدك.