التحقق من صحة البيانات الخاصة بكبسبب خطأ بشري وسوء الفهم البشري ، أو الجهل ، والناس في بعض الأحيان مدخلات الدولة غير صحيحة. كل التطبيق يحتاج إلى تنفيذ التحقق من صحة البيانات بحيث يمكنك معرفة ما إذا كانت البيانات هي حالة صالحة. مشكلة التحقق من الصحة ليست مجرد مشكلة إدخال البيانات كما يمكن أن يكون مشكلة مبرمج. على سبيل المثال ، يمكن أن يكون الإنسان إدخال البيانات بشكل صحيح ، ولكن رمز يمكن تنفيذ بعض العمليات غير صالحة مما أسفر عن الفساد الحكومي. تحتاج إلى التأكد من أن يحدث المصادقة بنجاح. نظرية في التحقق من صحة تطبيق اجاكس يعني أن العميل أو الملقم يمكن التحقق من صحة البيانات ، والتحقق من الصحة لمعرفة ما اذا كان عدد صالحة وقد دخل لا يمكن أن يؤديها إما على جانب العميل أو جانب الملقم . تخيل أن تتم المصادقة على جانب العميل ، يمكنك تحديد النقاط التالية : • يمكنك استخدام جافا سكريبت لتنفيذ جميع المصادقة عليها. • يمكن للعميل الفعل والتحقق من صحتها قبل إرسال البيانات إلى الخادم ، وبالتالي توفير رحلة ذهابا وإيابا إلى الخادم. • العميل ويب تعتبر غير آمنة ، لذلك يمكن أن تلقي خادم بيانات غير صالحة إذا المصادقة clientside هو المصادقة فقط. التحقق من جانب العميل يحفظ تجهيز السلطة على جانب الملقم من خلال العمل على التحقق من صحة واستخدام الموارد من قبل العميل. والجانب السلبي هو أن في تطبيق أتش تي أم أل ، العميل تعتبر غير آمنة ، ويمكن للقراصنة دائما الالتفاف على الجهود الأمنية للمطور aWeb. يمكنك التقليل من حجم المشاكل ، ولكن لا يمكن القضاء على المشاكل. وفي المقابل ، دعونا ننظر في التحقق من جانب الملقم ، حيث يمكنك تحديد النقاط التالية :
• يمكنك التحقق من تنفيذ جميع في اللغة التي يختارها ، سواء كان ذلك في جافا ، # ج ، ج + + ، فب] ، أو روبي. • التحقق من جانب الملقم يتطلب رحلة ذهابا وإيابا بين العميل والخادم ، والتي النفايات موارد الشبكة. في مصدر سبيل المثال ، سمة أتش تي أم أل img سمة كبريت ، ولكن أيضا هدفا وسمة onload. من هذا النظام على المستوى المنظور ، وهذا يعني أن هناك ثلاث سمات. المشكلة مع فلتر الخادم هو أنه يعامل هدف وسمات onload بوصفها سمة واحدة ، وهذا ربما يحدث ذلك بسبب تطبيق على مستوى التحقق من صحة تصفية أنشئت التي لم تحقق من البيانات على مستوى النظام. كان أداء إجراءات التحقق من الصحة على حد سواء على مستوى النظام والتحقق من صحة تطبيق التحقق من صحة المستوى ، وعلى الأرجح أن الخطأ قد تم القبض عليهم. الدولة والتحقق من الصحة ليست مشكلة بسيطة. الدولة والتحقق من صحة يشمل كلا من جانب العميل والخادم الجانب ، وتنطوي على حد سواء على مستوى النظام والتحقق من صحة تطبيق التحقق من صحة مستوى ، وفي البنية المقترحة من الصحة ، لا تزال مشكلة واحدة : إن العميل تعتبر غير آمنة ، ولكن الخادم تتوقع أن العميل سوف إرسال البيانات الصحيحة. هذا يمكن أن يكون مادة للكارثة ، ولكن ليس بسبب كيفية التحقق من صحة تطبيق ينفذ. مع معظم تطبيقات التقنية ، والتحقق من تطبيق نظام ينطوي على التحقق من صحة مستوى. إصلاحات العميل تصل البيانات بحيث يتم بالفعل بإزالة الأخطاء. الخادم الجانب يفترض أن البيانات غير الصحيحة ، ولكن لا تزال لديه القدرة على التقاط الأخطاء في حال حدوثها. الحل لبدء ، دعونا ننظر في هذه الصفحة أتش تي أم أل المستخدمة لإضافة رقمين معا. المصدر : / الانترنت / الجذر / مقالات اياكس / dhtml / التحقق / test.html المصدر : / الانترنت / الجذر / مقالات اياكس / dhtml / التحقق / test.html • عند استخراج الدولة للأرقام ، يجب أن مرجع في مربع النص قيمة الممتلكات لNumber1 وNumber2. • عند استخراج الدولة لنتيجة لذلك ، يجب أن مرجع في فترة الملكية innerHTML. • يجب التحقق من صحة مربع النص القيم Number1 وNumber2 كأرقام يجري. • إذا فشل التحقق من الصحة ، يجب إنشاء وعرض خطأ بحيث يمكن للمستخدمين اتخاذ إجراءات تصحيحية. • يجب أن لا يتم عرض الأخطاء على أساس مجزأ. وإجراءات التحقق من الصحة يجب أن تمر عبر دولة بكاملها ، وإنشاء أخطاء لوجد كل شيء. • وعندما لا يحدث مزيد من أخطاء التحقق من صحة ، لتمرير دولة ولدت إلى المستدعي. علما بأن دولة متعددة الحالات قد تحدث. ستلاحظ جيل من أخطاء متعددة ، أو حالات دولة متعددة. كلما خوارزمية يواجه عدة نتائج ، نتائج يتم تخزينها مؤقتا في صفيف التي يتم معالجتها من قبل الطالب من الخوارزمية. كما هو مبين في المادة 2 من قانون كتلة المادة ، هل يمكن أيضا استخدام كتل التعليمات البرمجية. رمز كتل سيكون الخيار المناسب ، لأنه لا يمكن أو لا يمكن أن تكون الأخطاء ، وهناك قد تكون أو لا تكون على سبيل المثال دولة. ولتوضيح هذه التعقيدات ، والنظر في التعليمات البرمجية التالية ، والذي يوضح كل من نهج استدعاء الدالة GetState : GenerateState الدالة () (noErrors فار = صحيح ؛ نتيجة فار = GetState ( "المعرف") ؛ ل(كثافة العمليات c1 = 0 ؛ c1 <result.errors.length ؛ c1 + +) (/ / لا شيء مع noErrors الخطأ = كاذبة ؛ إذا) (noErrors == صحيحا) (ل (كثافة العمليات c1 = 0 ؛ c1 <results.state.length ؛ c1 + +) (/ / لا شيء مع النتائج))) في السطر الأول ، هو احالة من noErrors متغير. وnoErrors متغير يستخدم لبيان ما إذا كانت أخطاء تحدث عند استخراج الدولة. إذا كان هناك أخطاء ، ثم تجهيزها للدولة سيكون سخيفا ، حيث لا يوجد دولة أو إذا كان هناك ، فمن غير مكتملة. المكالمة GetState بإرجاع مثيل كائن ، الذي اثنين من أعضاء بيانات : أخطاء والدولة. واثنين من أعضاء صفائف البيانات التي تحتوي على أخطاء ولدت حالة من الحالات. بعد استدعاء GetState ، حلقة يكرر أخطاء التحقق من صحة ، وإذا لزم الأمر ، وتولد استجابة. إذا كان يتم إنشاء خطأ ، وnoErrors متغير يتم تعيين قيمة زائفة ، مشيرا إلى وجود خطأ. إذا لم تكن هناك أخطاء ، ولدت حالة من الحالات التي يتحرك. GetState وكما هو ترميز ، يتم استدعاء الدالة والعمليات الدولة. إذا حدث خطأ ، ثم المستدعي من GetState يحتاج الى تشريح ما الخطأ الذي حدث وكيف يمكن للإشارة إلى أخطاء إلى المستدعي. حل آخر يتمثل في استخدام كتل التعليمات البرمجية التي تبسط كيف يمكن للدولة أو أخطاء يتم تجهيزها. رمز كتل تبسيط رمز ، لأنها تسمح لك بالتركيز على القيمة المضافة بالنسبة للرمز. رمز التالي يوضح كيفية إصدار GetState يستخدم كتل رمز : GenerateState الدالة () (GetState ( "تحديد هوية" ، (الخطأ : وظيفة (errorItem) (/ / لا شيء مع الخطأ) الدولة : وظيفة (stateInstance) (/ / لا شيء مع النتائج))) ؛) في تنفيذ معدلة من GenerateState ، الدالة GetState يتم تمرير مثيل كائن له طريقتين : الخطأ والدولة. عند حدوث خطأ ، والخطأ يتم استدعاء الدالة. إذا لم تحدث أخطاء ، ثم الدولة يتم استدعاء الدالة. المستدعي من GenerateState له تنفيذ مبسطة ، لأنه لا يحتاج إلا لرعاية الحالات عند وجود خطأ أو على سبيل المثال حالة حدوثها. إذا كان الطالب لا يوفر لتنفيذ الدالة خطأ ، ومن ثم فإن أي أخطاء يمكن أن تحدث يتم تجاهلها ، والمتصل فقط ينتظر مثيل صالح الدولة. تفاصيل SetState وكيفية استخدامها مشابهة لGetState. الفرق مع SetState هو أن الدولة هي التي انتدب للعمل في التمثيل. والآن دعونا ننظر في تفاصيل تنفيذ شكل أتش تي أم أل مرة أخرى ، وتغيير واحد إضافي لم يتم مناقشتها ، وأنه يحتاج إلى تغطية قبل مناقشة تفاصيل GetState أو SetState : النص جريئة ويبين إضافة عناصر تمتد أتش تي أم أل ، والتي يمكنك استخدامها لعرض أية أخطاء المرتبطة البيانات. في تطبيقات الماضي ، كنت قد استخدم مربع الحوار للإشارة إلى الأخطاء. المشكلة مع مربعات الحوار هو أنها تتحدث عن مشاكل البيانات ولكن لا تحديد فيه. مع نموذج معقدة إلى حد ما ، يمكن للمستخدمين أن نتساءل أين هو الخطأ. أتش تي أم أل الديناميكية (DHTML) تمنحك القدرة على تعديل العناصر أتش تي أم أل ، مما يجعل الحاجة لاستخدام مربع الحوار لا لزوم لها. تستخدم هذه المقالة على العناصر التي تمتد أتش تي أم أل يحتوي على خطأ. يمكنك استخدام كل ما تريد في التطبيقات الخاصة بك. ربما تريد استخدام النص الوامض ، أو ربما كنت ترغب في تغيير الخطوط انها اختيارك. من المهم ، على الرغم من أن كنت منتسبا الخطأ مع العناصر المحلية أتش تي أم أل. الآن دعونا تغطية تفاصيل GetState ، والتي يمكن أن تكون طويلة بعض الشيء : وظيفة GetState (المعرف ، رويتر) ( إذا كان (المعرف == "toadd") (/ / 1شكل فار = document.getElementById ( "آلة حاسبة") ؛ document.getElementById ( "Number1Error"). innerHTML = "" ؛ / / 2document.getElementById ( "Number2Error"). innerHTML = "" ؛ الكائنات فار = كائن جديد () ؛ / / 3 didError فار = كاذبة ؛ / / 4حاول ( obj.Number1 = Converter.convertToInteger (form.Number1.value) ؛ / / 5المصيد) (ه) (didError = صحيح ؛ document.getElementById ( "Number1Error"). innerHTML = e.toString () ، وإذا كان (cb.error) ( cb.error ((المقطع : "toadd" ، البند : "Number1" ، خطأ : e.toString ()})؛/ 6 /)) (محاولة obj.Number2 = Converter.convertToInteger (form.Number2.value) ؛) الصيد (ه) (didError = صحيح ؛ document.getElementById ( "Number2Error"). innerHTML = e.toString () ، وإذا كان (cb. خطأ) (cb.error ((المقطع : "toadd" ، البند : "Number2" ، خطأ : e.toString ()})؛)) إذا كان (cb.state & &! didError) ( cb.state ((المقطع : "toadd" ، والقيمة : الكائنات)) ؛ / / 7)) والا اذا (المعرف == "نتيجة") (عنصر فار = Navigation.findChild ( "آلة حاسبة" ، "نتيجة") ؛ Navigation.findChild ( "آلة حاسبة" ، "resulterror"). innerHTML = "" ؛ الكائنات فار = وجوه جديدة () ؛ محاولة (obj.Result = Converter.convertToInteger (element.innerHTML) ؛) الصيد (ه) (Navigation.findChild ( "آلة حاسبة" ، "resulterror"). innerHTML = e.toString () ، وإذا كان (سي بي . الخطأ) (cb.error ((المقطع : "نتيجة" ، البند : "النتيجة" ، خطأ : e.toString ()})؛) العودة ؛) إذا كان (cb.state) (cb.state ((المقطع : " نتيجة "، والقيمة : الكائنات)) ؛)) والا (اذا (cb.error) (cb.error ((القسم : معرف ، الخطأ :" الدولة معرف ( "المعرف + +" لا وجود لها ")) ؛))) رمز ليست معقدة ولكنها طويلة ، لأن المهمة تحتاج إلى إنجاز وقتا طويلا. القائمة التالية يفسر كل واحد من الخطوط الجريئة من التعليمات البرمجية. الأرقام في قائمة تتطابق مع أرقام في التعليقات المعروضة في رمز الضوء على : 1. GetState قرارا لتحديد أي تمثيل ينبغي أن تتحول إلى دولة. 2. GetState يعيد رسائل الخطأ المرتبطة التمثيل. في هذه المقالة ، وهذا يعني التنازل عن الممتلكات innerHTML من العناصر الفردية أتش تي أم أل تمتد إلى وجود مخزن مؤقت فارغة. في التطبيق الخاص بك ، قد يعني ذلك أن إعادة النص الوامض أو تغيير خط النص. انه من المهم لإعادة حالة خطأ بحيث لا يتم عرض الأخطاء القديمة كما يجري التحقق من صحة تنفيذها. 3. GetState instantiates كائن باستخدام نوع كائن. والمثيل ، واستخدام نوع كائن له هدف. هل يمكن أن يغري مثيل من النوع الذي قد أعضاء بيانات محددة مسبقا ، والأساليب ، ولكن ذلك لا ينصح. تخيل أنك تستخدم DHTML وتوليد نموذج حيوي. من الممكن ان يكون احد سياق النموذج قد ولدت عضوا البيانات ، وسياق آخر لا. من منظور الدولة ، وتريد أن تعرف الدولة التي تعكس السياق ، وليس ما هو رأيك في السياق ينبغي أن يكون. وبالتالي ، عند إنشاء كائن أنه لا يوجد لديه بيانات أعضاء وتعيين أعضاء البيانات بشكل حيوي ، وكنت فقط ضمان أن تكون البيانات المرتبطة السياق الحالي. 4. وdidError المتغير هو العلم الذي يشير إلى ما إذا كان خطأ التحقق من صحة حدث. هذا العلم هو تسليط الضوء هنا على ترافقي المناقشة السابقة بشأن سبب استخدام الاسترجاعات وليس الحلقات. ويبين الرسم التوضيحي للdidError أن الخوارزمية GetState يحتاج إلى تتبع ما إذا حدث خطأ. 5. المحول تحويل البيانات إلى نوع أتش تي أم أل المطلوبة ، والتي في حالة ومثال على ذلك هو قيمة عددية. التحويل هو استدعاء الدالة التي تختلف مع التطبيق يتم كتابتها. تحويل يتضمن التحقق من الصحة. علما بأن التحويل يتم تغليف داخل كتلة استثناء. استخدام كتلة استثناء هو المفضل ، وذلك لأن جميع الأخطاء سوف يتم ضبطهم. وإجراءات التحقق من صحة قد تفوت على بعض الأخطاء ، ولكن كتلة استثناء يمكن التقاط وعرض تلك الاخطاء. 6. إذا استثناء يتم إنشاؤها ، ومنع الصيد يجسد استثناء. وباستثناء مرة واحدة تم القاء القبض عليه ، ومعرفة من قبل المستخدم الاستدعاء خطأ ويمكن أن تسمى العملية الخطأ كذلك. 7. إذا لم يتم إنشاء أخطاء ، والمعرفة من قبل المستخدم رد الاتصال يسمى مع الدولة في النموذج. الشفرة التي ليست جريئة هي إما من تكرار وظائف أو رمز لدعم واحد من سبعة من التفاصيل. نتذكر أن GetState وSetState الوظيفية هي بذاتها. على سبيل المثال ، عندما فشل التحقق من الصحة ، ويتم إنشاء خطأ ، لديك الخيار لجعل عرض رد على الرسالة. بيد أن هذا النهج هو غير مرغوب فيه ، لأن رمز الدولة يجب ان تعرف عن تفاصيل التمثيل. وفقا للنمط التمثيل مورفينغ ، فإنه ليس من المرغوب فيه أن يكون الطالب من GetState أو SetState معرفة كيفية تمثيل تنفذ. هذا يشجع على الانفصال ، تماما كما GetState وSetState وظائف لا أعرف منشأ البيانات المستخدمة لتعيين دولة في التمثيل. ولأغراض التوضيح ، رمز التالي يعرض إكمال SetState وظائف وإشارات مرجعية التفاصيل التي تنفذ في نفس وظائف وسبعة من التفاصيل المحددة للوظيفة GetState : وظيفة SetState (المعرف ، الكائنات ، رويتر) ( إذا كان (المعرف == "toadd") (/ / 1شكل فار = document.getElementById ( "آلة حاسبة") ؛ document.getElementById ( "Number1Error"). innerHTML = "" ؛ / / 2document.getElementById ( "Number2Error"). innerHTML = "" ؛ إذا كان (typeof (obj.Number1)! = "عدد") (/ / 5العازلة فار = "obj.Number1 المتوقع عددا ، وإنما هو" + typeof (obj.Number1) ؛ document.getElementById ( "Number1Error"). innerHTML = العازلة ، وإذا كان (typeof (سي بي)! = "غير معروف" & & سي بي. خطأ) ( cb.error ((المقطع : "toadd" ، المعرف : "Number1" ، خطأ : العازلة)) ؛ / / 6)))) element.innerHTML = obj.Result ؛) والا (اذا (typeof (سي بي)! = "غير معروف" & & cb.error) (cb.error ((القسم : معرف ، الخطأ : "الدولة معرف (" + المعرف + "لا وجود لها")) ؛)) عند تعيين التمثيل مع الدولة ، وعلى نفس النوع من المنطق هو نفذت ، مع استثناء من خطوط 3 و 7 من قائمة التعليمات البرمجية السابقة. هذه الأرقام ليست الإشارة إليه هنا ، لأنه عند تعيين الدولة ، وكنت اجتاز مثيل الكائن الذي يحتوي على الدولة ، والتحقق من جانب الملقم لا يظهر ، وذلك لأن هذه المادة يركز على الحلول من جانب العميل. لاستكمال الحل ولكم سيكون استخدام طلب اياكس وإرسال أو تلقي الدولة والتحقق من جانب الملقم لا يظهر ، وذلك لأن هذه المادة يركز على الحلول من جانب العميل. يوضح تمثيل الدولة في وضع للقراءة فقط. باستخدام هذه المادة ، هل يمكن استرداد حالة من بعيد عرضه في وضع للقراءة فقط ، وتحريرها ، ومن ثم إرسالها إلى الخادم. وضع كل هذا معا ، وعليك أن تتذكر الأمور التالية حول التحقق من الصحة : • التحقق من الصحة ليست على وشك التحقق من صحة بعض البيانات. التحقق أولا وأخيرا هو عن تحديد الدولة التي يرتبط التمثيل. لغرض المصادقة عليها هو التأكد من أن الدولة عندما يتم نقل ، والدولة هي متسقة. • عند تنفيذ التحقق من الصحة ، إذا كانت الدولة هي نقل الى الخادم ، فإن الأرجح أن العميل لا يمكن الاعتماد عليها. العميل تعتبر غير آمنة ، وبالتالي فإن معظم يجب أن تتوقع هو على مستوى النظام التحقق من أن يزيل "الغبية" أخطاء. هذا لا يعني أنه لا يمكن تنفيذ عملية التحقق من صحة على مستوى التطبيق فقط لا يضع الإيمان الأعمى في التحقق من صحة ما إذا كان التطبيق يتطلب اجراءات أمنية مشددة. • وعندما يتلقى العميل دولة من الخادم ، فإنه لا بد من التحقق من صحة ، لأن الخادم تعتبر آمنة. مجازا ، هو مثل الذهاب الى البنك : البنك الصراف لا نثق بك ، وبالتالي ترى أنت ، الفرد ، وغير آمنة. والعكس ليس صحيحا ، كما كنت لا تثق في الصراف ولن السؤال ما يقول الراوي أو الأموال التي تتلقاها. • عند التحقق من أخطاء ، يمكنك استخدام DHTML لعرض خطأ بالقرب من الموقع الذي حدث فيه الانتهاك. على سبيل المثال ، لا تولد مربع الحوار ، لأن ذلك يمكن أن يؤدي إلى رسائل خطأ خفي. • عند تنفيذ التحقق من الصحة ، واستخدام الدولة والحصول على مجموعة وظائف الدولة حتى يتسنى للدولة ، والتمثيل ، والآليات المستخدمة لنقل دولة يمكن أن تنفصل عن بعضها البعض. • استخدم القطع البرمجية بحيث يتم استدعاء وظيفة المستخدم عند الضرورة ، فك الشفرة. مقال مقدم من سونيا Lande تنويه :موقعنا على الانترنت ليست مسؤولة عن محتوى هذه المادة. Webarticles هو حر للمعلومات. المهم : هذه المادة "التحقق من صحة البيانات الخاصة بك" وقد ترجم من قبل البرمجيات التلقائي. نشعر بالاسف من اجل أي الأخطاء الإملائية التي قد حدث. شكرا لتفهمكم.
|
|||||
| Online: 254 users browsing the articles directory |
|
|