d عام – الصفحة 6 – مدونة الفريق

التصنيف: عام

  • أدوات التحقق ( Validation Controls )

    من المميزات الرائعة التي قدمتها ASP.NET لمطوري المواقع
    هي أدوات التحقق

    لذلك دعنا نرى ما هي هذه الأدوات وما هي الفائدة منها ؟

    الكثير منا يقوم على سبيل المثال بالتسجيل في المنتديات وتكون البيانات المدخلة تتبع
    شروط معينة فعند إدخال البيانات يتم التحقق منها  ويتم ظهور رسالة
    تفيد بوجوب تغيير حقل معين في حال عدم تطابقه لشرط معين كمطابقة كلمة السر في مربع
    النص الأول مع تأكيده في مربع النص الثاني

    فالتحقق هي قواعد يتم تطبيقها على البيانات المدخلة من قبل المستخدم

     

    وقد قدمت لنا ال ASP.NET خمس أنواع
    من أدوات التحقق التي تتميز كل منها بوظيفة معينة تختلف عن غيرها والتي وفرت الوقت
    الكثير لمطوري المواقع فباستخدامها لا تحتاج إلى كتابة سطر برمجي واحد بعكس لغات الويب
    الأخرى المختلفة التي تطلب برمجة عمليات التحقق باختلاف أنواعها ووظائفها

    x
    وسنقوم باستعراض كل نوع على حدة بشكل مفصل وأول
    نوع فيها هو:

    • RequiredFieldValidator

    وهذه الأداة مهمتها التأكد من أن المستخدم قام بإدخال قيمة في المكان المراد أو لا

    ولتوضيح ذلك سنعطي مثالا

    وهو بعمل جدول من سطرين وعمودين ووضع مربع نص وزر وأداة التحقق RequiredFieldValidator
    بالشكل التالي مع إعطاء اسم الأداة التي سيتم إجراء التحقق عليه لخاصية
    ControlToValidate التابعة لأداة التحقق والتي ستكون هنا
    TextBox1 وأيضا إدخال النص الذي تريده في خاصية ErrorMessage
    وهي رسالة الخطأ التي تظهر للمستخدم في حال لم يدخل قيمة في مربع النص مع ترك خاصية
    Text فارغة  :

    بعد ذلك قم بتنفيذ الصفحة وتجربة الحالتين : الأولى بإدخال قيمة في مربع النص والضغط
    على الزر وفي هذه الحالة لن تظهر رسالة الخطأ والثانية بترك مربع النص فارغ والضغط
    على الزر وفي هذه الحالة تظهر رسالة الخطأ تعلمك بوجوب إدخال قيمة معينة

    وأريد أن أقوم بالتنبيه على أمر مهم ألا وهو التأكد من أن خاصية CausesValidation
    التابعة للزر تأخذ القيمة True وذلك لإنجاز عملية التحقق عند
    الضغط على الزر

    • النوع الثاني من أدوات التحقق وهو:
      CompareValidator

    وهذه الأداة مهمتها المقارنة بين قيمتين إما من خلال المقارنة بين قيمة مدخلة في
    مربع نص وقيمة مدخلة في مربع نص آخر أو بمقارنة قيمة مدخلة في مربع نص مع قيمة ثابتة

    وأيضا سنعطي مثالا كسابقتها لتوضيح الفكرة وطريقة استخدامها

    وهنا سنقوم بتوضيح الفكرة الأولى وهي بمقارنة قيمة مدخلة في مربع النص الأول مع قيمة
    مدخلة في مربع النص الثاني

    وسيكون ذلك بعمل جدول من 3 سطور وعمودين وإضافة مربعين نص وزر وأداة التحقق
    CompareValidator بالشكل التالي :

    ويلزمنا الاهتمام بالخصائص التالية التابعة لأداة التحقق :

    ControlToValidate: وتحتوي اسم الأداة التي سيتم التحقق من البيانات
    المدخلة به

    ControlToCompare: وتحتوي اسم الأداة التي سيتم مقارنته مع الأداة الآخر
    والذي تم تحديده في الخاصية السابقة

    ErrorMessage: وتحتوي على رسالة الخطأ التي ستظهر للمستخدم في حال اختل
    شرط التحقق

    Operator: وهي لتحديد العملية التي على أساسها سيتم التحقق بين القيمتين
    إما بالتساوي أو غيرها

    Type: وهي لتحديد نوع البيانات المدخلة التي سيتم التحقق منها إما أعداد
    صحيحة أو نص أو غيرها

    ولتوضيح الفكرة الثانية وهي بمقارنة قيمة مدخلة في مربع نص مع قيمة ثابتة وذلك بإضافة
    مربع نص واحد وزر وأداة التحقق وسنهتم بنفس خصائص أداة التحقق التي تم ذكرها عند توضيح
    الفكرة الأولى مع فارق بسيط وهو أننا هنا لن نهتم بالخاصية ControlToCompare
    ولكن اهتمامنا سينصب على الخاصية ValueToCompare والتي من خلالها
    سيتم إدخال القيمة الثابتة بناء على نوع البيانات الذي قمت بتحديده في الخاصية
    Type

    بعدها قم بالتجربة والتنفيذ ورؤية النتائج بنفسك

    • النوع الثالث من أدوات التحقق هو :
      RangeValidator

    وهذه الأداة مهمتها التحقق من أن القيمة المدخلة واقعة تحت مدى معين

    لنعطي مثالا لتوضيح الفكرة : سنقوم بإضافة مربع نص وزر وأداة التحقق بالشكل التالي

    والاهتمام بالخصائص التالية لها وهي :

    ControlToValidate و ErrorMessage و
    Type: وتم شرحها سابقا ويلزمنا هنا أيضا خاصية
    MaximumValue وهي لتحديد القيمة القصوى التي لا يمكن أن يتعداها المستخدم
    عند إدخال قيمة معينة في مربع النص وخاصية MinimumValue وهي
    لتحديد القيمة الدنيا التي يجب أن يلتزم المستخدم بالبدء منها عند تحديده للقيمة المدخلة
    في مربع النص

    • النوع الرابع من أدوات التحقق هو:
      RegularExpressionValidator

    وهذه الأداة مهمتها التأكد من صحة صياغة أو شكل القيمة المدخلة يعني على سبيل المثال
    مربع النص الخاص بالبريد الإلكتروني ، فنحن نعلم أن البريد الإلكتروني يتبع صيغة ثابتة
    في الكتابة لا يمكن تغييرها ولمنع المستخدم من كتابة أي نص عشوائي في خانة البريد الإلكتروني
    والتزامه بالصيغة المعروفة له يتم استخدام أداة التحقق هذه ولتوضيح ذلك ، سنضع مربع
    نص وزر وأداة التحقق وتحديد الصيغة الثابتة التي سيتم التحقق من خلالها من الخاصية
    ValidationExpression بالإضافة إلى خاصية ControlToValidate
    و ErrorMessage والتي تم شرحها في أدوات التحقق السابقة

    • النوع الخامس والأخير من أدوات التحقق هو:
      CustomValidator

    لنفترض أننا نريد التحقق من أن القيمة المدخلة تقبل القسمة على العدد 5
    ، هنا لا نستطيع استخدام أيا من أدوات التحقق السابقة لأن لا أحد منها
    يقدم هذه الخدمة ، لذلك لغة ال ASP.Net أضافت
    هذه الأداة لإتاحة الفرصة أمام مطور المواقع بالتحقق من خلال الأمر الذي يريده والتي
    لا توفرها أيا من أدوات التحقق الأخرى ولكن يتطلب هنا استخدام
    Jscript أو VBScript
    لكتابة الدالة التي من خلالها سيتم التحقق ولنطبق مثالا لتوضيح الفكرة:

    في البداية أضف مربع نص وزر وأداة التحقق إلى صفحة الويب وبعدها في صفحة السورس أضف
    الكود التالي بين بداية ونهاية head tag


    <script
    language=JavaScript>


    function validateNumber(oSrc, args) {


    args.IsValid = (args.Value % 5 == 0);


    }


    </script>

    وبعدها نعطي اسم الدالة لخاصية ClientValidationFunction
    التابعة لأداة التحقق وبعدها تستطيع تنفيذ الأمر

    • وإذا كنت قد جربت جميع الأمثلة السابقة على
      نفس صفحة الويب ، فلابد أنك لاحظت أمرا غريبا ألا وهو في حال عدم إدخال قيمة معينة
      للأداة الخاص يإحدى أدوات التحقق الأربعة والتي تبدأ من الأداة الثانية فإن رسالة الخطأ
      الخاصة بأداة RequiredFieldValidator ستظهر والسبب أن تلك الأدوات
      لا تعمل مع القيم الفارغة فهي لا تعتبرها قيما ولحل هذا الأمر وجد ما يسمى
      بال validationGroup
      وهي تعني وضع كل عدة كونترولز مع بعضها في مجموعة ويكون بإعطاء نفس اسم المجموعة للخاصية
      validationGroup لكل الأداةز التي ستتبع تلك المجموعة
    • وأيضا لإظهار جميع رسائل الخطأ الموجودة في
      الصفحة في مكان واحد يتم استخدام الأداة validationSummery ويتم
      اعطاء قيمة لخاصية التكست التابعة للكونترولز التي سيجرى عليها عملية التحقق ولتكن
      * وبعدها قم بالتنفيذ بالشكل التالي :

    ويمكنك أيضا إظهار رسائل الخطأ في صندوق حوار وذلك بإعطاء الخاصية showSummery
    القيمة False بينما يتم إعطاء الخاصية showMessageBox
    القيمة True بالشكل التالي:

    بعد استعراض أدوات التحقق، هل رأيت مدى سهولة استخدامها والوقت الذي توفره، أرأيت
    البراعة التي تمتلكها شركة مايكروسوفت في توفير كل ما يريح مطورو المواقع فهي لا تنسى
    أي أمر يعد مهما في تطوير المواقع.

    (المزيد…)

  • كيفية ربط موقعك مع برنامج أو مع عدة مواقع

    العديد منا تواجهه مشكلة عندما يريد ربط برنامج قام بصنعه بقاعدة بيانات موقع قام بصنعه أو العكس ، أو يريد عمل موقع يستطيع أي شخص التواصل مع قاعدته وأخذ ما يريد على أن يسمح له الموقع بذلك أو حتى السماح له بالإضافة في هذه القاعدة . ومع الدوت نت ، هذا الأمر سهل للغاية وممكن إنجازه بعدة تقنيات ، وهذا المقال يتطرق لأبسط هذه التقنيات.

    ولكن …لعل البعض يتساءل ، ما الهدف من ربط الموقع بالبرنامج ؟!

    الأمر له فائدة كبيرة، فأنت على سبيل المثال تستطيع عمل برنامج يبقى على جهاز المستخدم يقدم نفس خدمات الموقع وذلك لتريح المستخدم من عناء فتح الموقع والتنقل من خلاله، أو تستطيع ربط عدة مواقع بقاعدة بيانات موقعك مثل موقع امازن ويستطيع أي شخص الوصول لخدمات موقعك كما يقوم جوجل ولايف وياهو وباقي المواقع الضخمة ، ولكن كيف سيتم هذ الأمر ؟؟

     

    بما أن البرنامج سيقدم نفس الخدمات ( أو جزء منها )  التي سيقدمها الموقع ، فهذا يعني أن قاعدة البيانات ستكون مشتركة بين الاثنين ( أو جزء منها ) ، ولتفرض أن الموقع هو صاحب القاعدة الأساسية ، والبرنامج هو الجزء المستفيد من هذه القاعدة ، وهي مرفوعة على الإنترنت

    سيكون الحل كالتالي : سنقوم بعمل دالة عادية ولكن سنقوم بوضعها في منطقة خاصة وبمواصفة خاصة (Attribute) ، وسنقوم باستدعائها من البرنامج.

    سيتم إضافة جميع الدوال التي نحتاجها في ويب سيرفس (web service)  وبعدها نستدعيها في البرنامج ، وهذا الأمر يتم بالشكل التالي

    ، سنقوم بإضافة ويب سيرفس وذلك بالنقر بالزر الأيمن للماوس على اسم الموقع من قائمة.Solution Explorer ونختار add New item ومن ثم نختار web service

    وبعدها سنقوم بكتابة جميع الدوال التي سنحتاجها على أن يسبق كل دالة _<()WebMethod>  ولننظر إلى الدالة التالية على سبيل المثال  وهي لاسترجاع اسم  جهاز الحاسوب ونظام التشغيل المستخدم:_<()WebMethod>

    (المزيد…)

  • احمي موقعك من تغرة XSS

    احمي موقعك من تغرة XSS

    رغم أن ثغرة XSS تعتبر ثغرة قديمة، إلا أنها قد شاعت في هذه الأيام XSS حتى أنها أصبحت كابوسا كبيرا لكثير من المواقع والبرمجيات الجاهزة كالمنتديات وما شابه، وهنا سأطرح الحلول المقترحة لهذه المشكلة في الدوت نت بإذن الله.
    بداية، ما سأقوم بعرضه يكفي فقط للدوت نت الإصدار 1.1 وما بعده مثل الإصدار 2.0 وأما بخصو ص الإصدار 1.0 فتوجد حلول أخرى لحل هذه الثغرة وهو ما لن أهتم به لأن من يستخدم الإصدارات القديمة كان الواجب عليه أن يواكب التحديثات.
    إن هذه المشكلة تظهر عند مناطق إرسال البيانات، فمثلا لدي صفحة بها صندوق نصي وأقوم عبرها بإرسال البيانات للخادم ، فقام شخص ما بكتابة الجملة التالية:

    Code

    <script>alert(‘some malicious code’);</script>

     

    وهذا وسم جافا سكريبت يظهر رسالة، وليست الخطورة في هذا الوسم ولكنها تكمن في إمكانية إرسال وسوم أخرى عديدة شأنها تغيير عمل الصفحة بالكامل.
    الحل يكمن في أن نقوم بمنع إرسال هذه الوسوم  للخادم ، وإذا كانت الصفحة تحتاج لإرسال قيمة بالرابط QueryString يجب فحصها في الصفحة التالية لها ( صفحة قراءة البيانات ).
    لتلافي منع إرسال وسوم خطيرة إلى يتوجب عليك أن تقوم بتفعيل فحص المدخلات عبر الخاصية ValidateRequest=”true”  في الصفحة في أول سطر بها.

    وهذه الخاصية جديدة في الإصدار 1.1 وما بعده وهدفها فحص مدخلات الصفحة المرسلة، فإذا وجد أن هنالك وسوم ممنوعة ، سوف يقوم الخادم برمي خطا من نوع HttpRequestValidationException وهو ما يمكنك أن تقوم بفحصه عبر الملف Global.asax في ححدث الخطأ ، وتقوم بإطهار رسالة أو صفحة خاصة له تخبره مثلا ، بأن هذا الأمر ممنوع ، أو عار عليه إذا رغبت بذلك .

    أو أن تقوم بتفعيلها  في ملف الإعدادات Web.Config  في وسم الصفحة validateRequest=”true”، مع العلم أن هذا هو القيمة الإفتراضية لهذه الخاصية هي true ، بمعنى إن لم تكن قد غيرتها فلا تقوم بفعل شيء.

    الأمر الآخر هو عند إرسالك لبيانات من صفحة إلى أخرى ، عليك أن تقوم بإستدعاء الدالة Server.HtmlEncode() عند الإرسال ، وعند استقبال البيانات عليك قراءتها عبر الدالة Server.HtmlDecode()، أو مثلا أن تستقبل البيانات من ويب سيرفس أو من قاعدة بيانات أخري، على سبيل المثال أنني مثلا أريد أن أرسل اسم المستخدم المكتوب في الصندوق النصي لصفحة أخرى كالتالي

    Code

    Response.Redirect(“login.aspx?username=” & Me.TextBox1.Text)

    فإنه يتوجب إضافة الدالة بالشكل التالي

    Code

    Response.Redirect(“login.aspx?username=” & Server.HtmlEncode(Me.TextBox1.Text))

    وعند قراءة البيانات في الصفحة الثانية أن تقرأ بالشكل التالي

    Code

    Dim uname As String = Server.HtmlDecode(Request.QueryString(“username”))

    أما بخصوص الإصدار 1.0 فإنه توجد بعض الحلول الفعالة مثل استخدم Reqular Expression  في فحص المدخلات أو القيم المرسلة ، أو بطريقة بسيطة وغير دقيقة استبدال الوسوم بالقيم المشابهة لها من ال HTML

    بالتوفيق للجميع

    (المزيد…)

  • مراجعة فيلم Lucy

    حسنا بداية جيدة للفيلم ، البطل الخارق يبدأ دائما بكونه شخص عادي ويكتشف لاحقا مواهبه، وهذا يعطينا دفعة أنه يمكن لأي أحد منا أن يكون خارق في المستقبل، مثل لوسي أو سوبر مان … إلخ
    الفيلم مبني كل البناء على نظرية التطور – وهؤلاء الحمقى لا يكلون في نشر فكرتهم الساذجة في كل فيلم – وكأن علماء الخلية وال DNA والجينيوم ما زالوا يؤمنون بهذه النظرية المنقرضة، أنت يا سكارلت جوهانسون يهودية وتؤمنين بالله، سأبلغ عنه جماعتك لتمثيلك بهذا الفيلم.

    حسنا نعود للأحداث
    لوسي ( سكارليت جوهانسون) ، تجد نفسها بالخطأ في المنتصف مع تجار مخدرات، يقومون بشق بطنها وإخفاء كمية من المخدرات لنقلها ( اعتقد الكلمة Smugler ) كناقلة مخدرات ، وأثناء قيامها بعملية نقل هذا المخدر الجديد، ينتقل جزء منه إلى دورتها الدموية فتبدأ الأحداث بعدها، وتصبح سكارليت جوهانسون البطلة الخارقة.، والقصة شبيهة، إن لم تكن نفسها قصة فيلم Limitless

    الآن التفاصيل الكاملة ( لا تقرأها إذا اردت مشاهدة الفيلم، لأني سأكشف تفاصيل الفيلم )
    بالخطأ يبدأ دخول مخدر جديد إلى داخل جسد سكارليت، يبدأ عقلها بالنمو وتستطيع أن تتحكم وتشغل خلايا من عقلها أكثر، وحسب الأسطورة ( وهي مذكورة أيضا في الفيلم ) نحن نستخدم فقط 1 % من قدراتنا العقلية – وهو بالمناسبة أمر خطأ علميا – وحينما نزيد استخدام خلايا الدماغ بشكل أكثر نصبح خارقين ولنا قدرات لا يمكن تصورها أو حصرها
    تقوم لوسي بقتل خاطفيها، وتأكل الطعام بشهراهة ( وهذا دليل على أنك بدأت تمسي خارقا ) وتخرج الرصاصات من جسدها، وتهرب من الأشرار.

    تخرج لوسي، وتبدأ برؤية العالم بطريقة أخرى ( مثل عمك نيو في فيلم الماتريكس ) ، تتقمص بعدها شخصية Hitman وتتوجه إلى رئيس العصابة ، وتطلب منه معرفة أماكن الأشخاص الأخرين الذين ينقلون المخدر الجديد، فتدخل إلى عقله وتقرأ المعلومات عن طريق اللمس.

    تقوم بعدها لوسي بالبحث عبر الإنترنت عن شخص خبير في العقل البشري، فتتصل بالدكتور سامويل نورمان ( مورجان فريمان ) وتخبره بقصتها وبقدراتها ( والتي ما زالت تتطور كل لحظة ) ، فينصحها بنقل معرفتها هذه إلى غيرها، وهذه هي مهمتها.
    تتصل لوسي الشرطة وتخبرهم عن الأشخاص الاخرين ليلقوا القبض عليهم، وفعلا تقبض الشرطة على ثلاثة منهم
    حسب نظرية العالم نورمان، لأن البيئة المحيطة بلوسي غير مناسبة، يبدأ جسمدها عملية التغيير لتصبح خالدة بعد ذلك، وأمامها خيار سريع بأن يموت جسدها، فتستخدم كمية المخدرات التي كانت بحوزتها، لبناء جسدها الخالد وتقويته، وتنجح بذلك فتجد نفسها أنها كنت في غيبوبة وتم نقلها للمستشفى، وبأنها أمست تستخدم 50% من قدراتها الكلية.
    تخرج من المستشفى فتجد الشرطي المسؤول عن جلب أكياس المخدرات من المهربين الآخرين، وتطلب أن تأخذهم بنفسها لأن العصابة ستقوم بأخذهم بكل الطرق الممكنة ، وتأخذ المخدرات منهم في النهاية.
    تتوجه إلى الدكتور نورمان، والذي يكون قد جهز فريقا لمعاينة لوسي، فتخبره ببعض المعلومات الخاطئة والتي بني عليها العلم، وتخبره بأنه يجب أن يقوم بحقنها بباقي الدواء ( المخدر) وأنها ستتواصل معه … إلخ
    تبدأ العملية فتتطور لوسي بشكل مخيف، وتصل إلأى نسبة 80%، تقوم باستهلاك كل المادة من حولها، لبناء حاسوب خارق لنقل المعرفة إلى البشرية، وهي الرسالة الأسمى التي يجب أن تقوم بتوصيلها ، فتصل بعد ذلك إلى نسبة 99%، وتقوم بالتحكم بالزمن فتعود بالماضي لتعلمه إلى لحظة ولاده الكون، لتخبر البشر بكل هذه المعرفة، وتضعها في ذلك الحاسوب، والتي تضعها في USB Flash وتسلمها للدكتور نورمان، وتمسي لوسي كما في فيلم التفوق Transenense في كل مكان حولنا.
    وتنتهي القصة

    تعليقات:
    سكارليت جوهانسون مناسبة لدور هذا الفيلم، فهي جميلة، قوية، جذابة، ووجود مورجان فريمان بدور العالم، أمر أكثر من رائع، فهو يليق به – أو تعودنا عليه – دور الرجل الحكيم.

    الفيلم بالمجمل رائع، فهو تجميع لأفلام وحبكات كما ذكرت بعض الأفلام، مثل ماتريكس، وlimitless و transendense ولكن بحبكة وبنهاية أفضل.
    صراحة في الفترة الأخيرة كثرة أفلام الرجال الخارقين، أو الدواء الخارق، أو العميل الخارق .. إلخ، ويجب أن يكون هنالك قصص جديدة، صحيح أن قصة لوسي بها حبكات أجمل من سابقتها، ولكنها لم تقدم الطفرة المطلوبة

    أحببت أن أفسر بعض الأحداث التي رأتها لوسي في تكوين الكون حينما رجعت بالزمن، وهو كما أتوقعه
    سقوط النيازك المحملة بالحديد على الأرض، حيث أن الحديد لم يكن متواجد على الأرض وجلبته النيازك
    انفصال القمر عن الأرض، حيث القمر كان جزء من الأرض
    ثم وجود nebulas حيث تكونت النجوم والمجرات
    ثم حسب ما اعتقد الإنفجار العظيم، وهو أيضا أمر مثبت علميا
    ومن ثم شيء قبل الانفجار العظيم لم اعرف ما هو ولم أسمع عنه

    نات نات ، تقييمي لفيلم هو 6 من 10 ، وأنصح بمشاهدته إذا فاتتك الأفلام السابقة مثل Limitless ، و Transedence