مجنون التحقق من صحة php. التحقق من الصحة وتطهير البيانات باستخدام PHP
من الضروري للغاية أن يتم التحقق من صحة الإدخال في النموذج الخاص بك قبل أخذ بيانات إرسال النموذج لمزيد من المعالجة. عندما يكون هناك العديد من الحقول في النموذج ، يصبح النص البرمجي للتحقق من صحة PHP معقدًا للغاية. نظرًا لأنك تقوم بنفس التحقق من الصحة أو ما شابه ذلك لمعظم النماذج التي تقوم بها ، يتم إنفاق الكثير من الجهد المكرر على عمليات التحقق من صحة النموذج.
هذا البرنامج النصي العام لأداة التحقق من صحة نموذج PHP يجعل من السهل جدًا إضافة عمليات التحقق إلى النموذج الخاص بك.
نقوم بإنشاء وربط مجموعة من "واصفات التحقق" مع كل عنصر في النموذج. "واصف التحقق" عبارة عن سلسلة تحدد نوع التحقق المطلوب إجراؤه. على سبيل المثال ، "req" تعني "مطلوب" ، وتعني "alpha" السماح فقط بالأحرف الأبجدية وما إلى ذلك.
يمكن أن يحتوي كل حقل في النموذج على صفر أو واحد أو أكثر من عمليات التحقق من الصحة. على سبيل المثال ، يجب ألا يكون الإدخال فارغًا ، ويجب أن يكون أقل من 25 حرفًا ، ويجب أن يكون أبجديًا رقميًا ، إلخ
يمكنك إقران مجموعة من واصفات التحقق لكل حقل إدخال في النموذج.
قم بتنزيل البرنامج النصي للتحقق من صحة نموذج PHPيمكنك تنزيل البرنامج النصي للتحقق من صحة نموذج PHP أدناه:
يحتوي الملف المضغوط على formvalidator.php النصي للتحقق من صحة النموذج والوثائق ونماذج الاستخدام.
الوسيطة الأولى هي اسم حقل الإدخال في النموذج. الوسيطة الثانية هي واصف التحقق الذي يخبر نوع التحقق المطلوب. الوسيطة الثالثة هي رسالة الخطأ التي سيتم عرضها في حالة فشل التحقق من الصحة.
inpname $: inp_err
\ n "؛)) مثالالمثال أدناه سيجعل الفكرة أكثر وضوحًا
الاسم: البريد الإلكتروني:
إضافة التحقق المخصصإذا كنت تريد إضافة تحقق مخصص لم يتم توفيره بواسطة واصفات التحقق ، يمكنك القيام بذلك. فيما يلي الخطوات:
يمتد class MyValidator إلى CustomValidator (الوظيفة DoValidate (& $ formars، & $ error_hash) (if (stristr ($ formars ["Comments"]، "http: //")) ($ error_hash ["Comments"] = "لا عناوين URL مسموح بها في التعليقات "؛ إرجاع خطأ ؛) إرجاع صحيح ؛))
المدقق $ = new FormValidator ()؛ $ validator-> addValidation ("Name"، "req"، "Please fill in Name")؛ Validator-> addValidation ("Email" ، "email" ، "إدخال البريد الإلكتروني يجب أن يكون قيمة بريد إلكتروني صالحة") ؛ Validator-> addValidation ("Email"، "req"، "Please fill in Email")؛ $ custom_validator = new MyValidator ()؛ المدقق $-> AddCustomValidator ($ custom_validator) ؛
سيتم استدعاء وظيفة التحقق المخصصة تلقائيًا بعد عمليات التحقق الأخرى.
جدول واصفات التحققفيما يلي قائمة بجميع واصفات التحقق:
واصف التحقق | إستعمال |
مطلوب | يجب ألا يكون الحقل فارغًا |
maxlen = ؟؟؟ | يتحقق من طول البيانات المدخلة إلى الحد الأقصى. على سبيل المثال ، إذا كان الحد الأقصى للحجم المسموح به هو 25 ، فامنح واصف التحقق مثل "maxlen = 25" |
مينلين = ؟؟؟ | يتحقق من طول السلسلة التي تم إدخالها إلى الحد الأدنى المطلوب. مثال "minlen = 5" |
alnum | تحقق من البيانات إذا كانت تحتوي على أي أحرف أخرى بخلاف الأحرف الأبجدية أو الرقمية |
alnum_s | يسمح فقط بالأحرف الأبجدية والرقمية والمسافات |
الأس | تحقق من البيانات الرقمية |
ألفا | تحقق من البيانات الأبجدية. |
alpha_s | تحقق من البيانات الأبجدية واسمح بمسافات. |
بريد إلكتروني | الحقل عبارة عن حقل بريد إلكتروني وتحقق من صحة البيانات. |
لتر = ؟؟؟ ليسثان = ؟؟؟ | تحقق من البيانات لتكون أقل من القيمة التي تم تمريرها. صالحة فقط للحقول الرقمية. مثال: إذا كانت القيمة يجب أن تكون أقل من 1000 ، فاذكر وصف التحقق على النحو التالي "lt = 1000" |
GT = ؟؟؟ أكبر من = ؟؟؟ | تحقق من البيانات لتكون أكبر من القيمة التي تم تمريرها. صالحة فقط للحقول الرقمية. مثال: إذا كانت القيمة يجب أن تكون أكبر من 10 ، فاذكر وصف التحقق على النحو التالي "gt = 10" |
regex = ؟؟؟ | تحقق باستخدام تعبير عادي من أن القيمة يجب أن تتطابق مع التعبير العادي. مثال: يسمح "regexp = ^ (1،20) $" بما يصل إلى 20 حرفًا أبجديًا. |
لا تختار = ؟؟ | واصف التحقق هذا مخصص لعناصر الإدخال المحددة (القوائم) عادةً ، تحتوي مربعات القائمة المختارة على عنصر واحد يقول "اختر واحدًا". يجب على المستخدم تحديد خيار آخر غير هذا الخيار. إذا كانت قيمة هذا الخيار هي "Select One" ، فيجب أن يكون وصف التحقق "dontselect = Select One" |
لايختلط | واصف التحقق هذا مخصص لخانات الاختيار. يجب على المستخدم عدم تحديد خانة الاختيار المحددة. أدخل قيمة خانة الاختيار بدلاً من ؟؟ على سبيل المثال ، dontselectchk = on |
ينبغيسيلشك | واصف التحقق هذا مخصص لخانات الاختيار. يجب على المستخدم تحديد خانة الاختيار المحددة. أدخل قيمة خانة الاختيار بدلاً من ؟؟ على سبيل المثال ، shouldselchk = on |
لا تشغل بالكهرباء | واصف التحقق هذا مخصص لأزرار الاختيار. يجب على المستخدم عدم تحديد زر الاختيار المحدد. أدخل قيمة زر الاختيار بدلاً من ؟؟ على سبيل المثال ، dontselectradio = NO |
سيليكتراديو | واصف التحقق هذا مخصص لأزرار الاختيار. يجب على المستخدم تحديد زر الاختيار المحدد. أدخل قيمة زر الاختيار بدلاً من ؟؟ على سبيل المثال ، selectradio = نعم |
selmin = ؟؟ | حدد على الأقل عدد n من خانات الاختيار من مجموعة خانات الاختيار. على سبيل المثال: selmin = 3 |
سلوني | يجعل مجموعة الراديو إلزامية. يجب على المستخدم تحديد عنصر واحد على الأقل من مجموعة الراديو. |
eqelmnt = ؟؟؟ | قارن بين عنصرين في النموذج وتأكد من تطابق القيمتين على سبيل المثال ، "كلمة المرور" و "تأكيد كلمة المرور". استبدال ؟؟؟ باسم عنصر الإدخال الآخر. على سبيل المثال: eqelmnt = Confirm_pwd |
تحتاج جميع تطبيقات الويب التفاعلية تقريبًا إلى التحقق من صحة الإدخال. على سبيل المثال ، ربما يتطلب نموذج التسجيل كلمة مرور للتأكيد. ربما عنوان بريد إلكترونييجب أن يكون فريدًا. يمكن أن يكون التحقق من صحة البيانات عملية مرهقة. لحسن الحظ ، ليس في Laravel. توفر فئة Validator مجموعة مذهلة من مساعدي التحقق ، مما يجعل التحقق من صحة البيانات سهلاً قدر الإمكان. لنلقي نظرة على مثال:
الحصول على مصفوفة من البيانات للتحقق من صحتها: $ input = Input :: all ()؛ تحديد قواعد التحقق من صحة البيانات: $ rules = array ("name" => "required | max: 50"، "email" => "required | email | unique: users"،)؛ إنشاء نسخة Validator والتحقق من صحة البيانات: التحقق من صحة $ = Validator :: make ($ input، $ rules)؛ إذا (التحقق من صحة $-> فشل ()) (إرجاع التحقق من صحة $-> أخطاء ؛)عندما يكون هناك عقار أخطاءيمكنك الوصول إلى أداة تجميع الرسائل ، والتي تتيح لك إنشاء رسائل الخطأ الخاصة بك بسهولة. بالطبع ، تحتوي جميع قواعد التحقق من الصحة على رسائل خطأ بشكل افتراضي. تظهر رسائل الخطأ القياسية في اللغة / en / validation.php.
أنت الآن على دراية بالقواعد الأساسية لاستخدام فئة Validator. أنت على استعداد لاستكشاف ومعرفة القواعد المستخدمة للتحقق من صحة بياناتك!
قواعد التحقق من الصحة البيانات المطلوبة تحقق من قيمة المعلمة غير الفارغة المطلوبة: "name" => "مطلوب" Alpha و Alpha Numeric و Alpha Dash تحقق من الأحرف فقط: "name" => "alpha" تحقق من الأحرف والأرقام فقط: "اسم المستخدم "=>" alpha_num "تحقق من وجود أحرف وأرقام وشرطات وشرطات سفلية فقط:" اسم المستخدم "=>" alpha_dash "التحقق من حجم سلسلة سمة سلسلة أو نطاق من القيم لسمة رقمية:" الاسم " => "size: 10" تحقق من وجود نطاق من القيم: "payment" => "between: 10.50"ملاحظة: يتم تضمين الحد الأدنى والحد الأقصى في النطاق.
التحقق من الحد الأدنى لحجم السمة: "payment" => "min: 10" Checking أكبر مقاسالسمة: "payment" => "max: 50" الأنواع الرقمية تحقق مما إذا كانت السمة تنتمي إلى نوع رقمي: "payment" => "numeric" تحقق مما إذا كانت السمة تنتمي إلى نوع عدد صحيح: "payment" => "عدد صحيح" الدخول إلى مصفوفة القيم: "size" => "in: small، medium، large" التحقق من السمة لاستثناء من مصفوفة القيم: "language" => "not_in: cobol، المجمع" التأكيدقاعدة مؤكديتحقق ذلك من أجل سمة معينةهناك سمة مطابقة * تأكيد.
تحقق من السمة للتأكيد: "كلمة المرور" => "مؤكدة"في هذا المثال ، يتحقق المدقق من أن المعلمة كلمة المروريفي بالشروط تأكيد كلمة المرورمن مجموعة التحقق من الصحة.
قبولقاعدة قبلتيتحقق المعلمة لقيمة نعمأو 1 . تتحقق هذه القاعدة من مربعات الاختيار الإلزامية ، مثل مربع الاختيار "شروط الخدمة".
التحقق من القبول: "المصطلحات" => "مقبولة" المراسلات والاختلافات التحقق من أن السمة هي نفسها السمة الأخرى التي تتم مقارنتها: "token1" => "same: token2" التحقق من أن السمة لها قيمة مختلفة: "password" => "different: old_password" ، التعبيرات العاديةقاعدة مباراةيتحقق من السمة للرضا تعبير عادي.
فحص التعبير العادي: "username" => "match: / + /"؛ التفرد والوجود التحقق من المعلمة للتميز في قاعدة البيانات: "email" => "unique: users"في هذا المثال ، الإعداد بريد إلكترونيالتحقق من التفرد في الجدول المستخدمين. هل تريد التحقق من تفرد سمة عمود آخر بجانب هذا العمود؟ لا مشكلة:
تحديد عمود آخر للتحقق منه: "email" => "unique: users، email_address"في كثير من الأحيان ، عند تحديث سجل ، تريد استخدام قاعدة التفرد ، لكن تستبعد السجل الجاري تحديثه. على سبيل المثال ، تريد السماح للمستخدمين بتغيير عناوين بريدهم الإلكتروني. ولكن عندما يتم تشغيل القاعدة فريد، عليك تخطي هذا المستخدم حتى لا تتسبب في خطأ وهمي في التحقق من الصحة. انه سهل:
تجاهل المعرف المحدد: "البريد الإلكتروني" => "فريد: المستخدمون ، عنوان_البريد الإلكتروني ، 10" التحقق مما إذا كانت السمة موجودة في قاعدة البيانات المحددة: "الحالة" => "موجودة: تنص على" تحديد اسم العمود للقاعدة الموجودة: "الحالة "=>" موجود: حالات ، اختصار "تواريخ تحقق مما إذا كانت معلمة التاريخ قبل ...:" birthdate "=>" before: 1986-28-05 "؛ التحقق مما إذا كانت معلمة التاريخ بعد ...: "birthdate" => "after: 1986-28-05"؛ملاحظة: فحص قبل وبعد الاستخدامات وظيفة PHP strtotime.
عناوين البريد الإلكتروني التحقق من أن المعلمة عنوان البريد الإلكتروني: "عنوان" => "بريد إلكتروني"ملاحظة: تستخدم هذه القاعدة طريقة PHP المدمجة عامل التصفية.
عناوين URL تحقق مما إذا كانت المعلمة هي عنوان URL: "link" => "url" تحقق مما إذا كانت المعلمة هي عنوان URL نشط: "link" => "active_url"ملاحظة: القاعدة active_urlالاستخدامات checkdnsrللتحقق مما إذا كان عنوان URL نشطًا.
التحميلاتقواعد التمثيل الصامتتأكد من أن الملف الذي تم تحميله يطابق نوع MIME. تستخدم هذه القاعدة امتداد PHP Fileinfo الذي يتحقق من محتويات الملف ويحدد نوعه. يتم تعريف أي امتدادات ملفات تنطبق على هذه القاعدة في config / mimes.php.
التحقق مما إذا كان الملف ينتمي إلى نوع معين: "picture" => "mimes: jpg، gif"ملاحظة: عند التدقيق ، لا تنس استخدام Input :: file () أو Input :: all ().
التحقق مما إذا كان الملف صورة: "picture" => "image" التحقق من حجم الملف: "picture" => "image | max: 100" طلب رسالة خطأيتيح لك Laravel التعامل مع رسائل الخطأ باستخدام فئة جامع أخطاء بسيطة. بعد طرق الاتصال يمر، يمرر، اجتاز بنجاحأو فشلمثيل المدقق ، يمكنك الوصول إلى الخطأ باستخدام الخاصية أخطاء. جامع الأخطاء له وظائف بسيطة للاستعلام عن رسائل الخطأ:
حدد ما إذا كانت سمة تحتوي على رسالة خطأ: إذا كان (التحقق من صحة $-> أخطاء-> بها ("البريد الإلكتروني")) (// تحتوي سمة البريد الإلكتروني على أخطاء ...) اطلب رسالة الخطأ الأولى للسمة: echo $ التحقق من الصحة -> الأخطاء-> أولاً ("البريد الإلكتروني") ؛قد تحتاج إلى التفاف رسالة الخطأ الخاصة بك في علامات HTML. لا مشكلة. عند الاتصال: صاحب الرسالة ، حدد التنسيق كمعامل ثاني للطريقة.
تنسيق رسالة الخطأ: echo $ validation-> errors-> first ("email"، "")؛ الحصول على كافة رسائل الخطأ الخاصة بالسمة: رسائل $ = التحقق من صحة $-> أخطاء-> get ("البريد الإلكتروني") ؛ تنسيق جميع رسائل الخطأ للسمة: رسائل $ = التحقق من صحة $-> أخطاء-> get ("email"، "")؛ احصل على جميع رسائل الخطأ لجميع السمات: $ messages = $ validation-> errors-> all ()؛ تنسيق جميع رسائل الخطأ لجميع السمات: $ messages = $ validation-> errors-> all ("")؛ تمرير التحقق من الصحةبمجرد إتمام عملية التحقق ، تحتاج إلى طريقة سهلة لعرض الأخطاء في طريقة العرض. يجعل Laravel الأمر سهلاً للغاية. لنلق نظرة على سيناريو نموذجي. يمكن تحديد ذلك بطريقتين:
Route :: get ("Register"، function () (return View :: make ("user.register")؛))؛ Route :: post ("Register"، function () ($ rules = array (...)؛ $ validation = Validator :: make (Input :: all ()، $ rules) ؛ إذا ($ validation-> fails ( )) (return Redirect :: to ("Register") -> with_errors ($ validation)؛))) ؛
عظيم! لذلك ، لدينا طريقتان بسيطتان لاستمارة التسجيل. واحد للتعامل مع عرض النموذج والآخر للتعامل مع إدخال النموذج. في مسار POST ، نقوم ببعض التحقق من صحة الإدخال. إذا لم يتم تمرير التحقق ، سنعيد توجيهك مرة أخرى إلى نموذج التسجيل الذي يشير إلى وجود أخطاء وعرض الأحدث في النموذج.
لكن لاحظ أننا لا نربط الأخطاء بشكل صريح بأي هدف في مسار GET الخاص بنا. ومع ذلك ، سيكون متغير الخطأ متاحًا في العرض. يحدد Laravel بذكاء ما إذا كانت هناك أخطاء في الجلسة وإذا كان الأمر كذلك ، يرفق الرسائل بالعرض. إذا لم تكن هناك أخطاء ، فسيستمر إرفاق حاوية رسالة خطأ فارغة بالعرض. سيكون للعرض دائمًا حاوية رسائل خطأ متاحة. نحب أن نجعل حياتك أسهل.
رسائل خطأ مخصصةهل تريد استخدام رسالة الخطأ الخاصة بك؟ ربما تريد حتى استخدام رسائل خطأ مخصصة لسمة وقاعدة معينة. على أي حال ، فإن فئة Validator تجعل من السهل القيام بذلك.
إنشاء مصفوفة من رسائل الخطأ المخصصة للمدقق: رسائل $ = مجموعة ("مطلوب" => ": حقل السمة مطلوب."،)؛ التحقق من صحة $ = Validator :: make (Input :: get ()، $ rules، $ messages)؛عظيم! الآن سيتم استخدام رسائلنا المخصصة دائمًا عند التحقق. ولكن ما هو: تعبير السمة في مشاركتنا. لتسهيل حياتك ، يستبدل صنف Validator: attribute بالسمة التي تسببت في حدوث الخطأ. سيؤدي ذلك إلى إزالة حرف الشرطة السفلية من اسم السمة. يمكنك أيضًا استخدام العناصر النائبة: other ،: size ،: min ،: max ، و: القيم لإنشاء رسائل الخطأ.
أمثلة على رسائل الخطأ المخصصة: $ messages = array ("same" => "The: attribute و: other must match."، "size" => "يجب أن يكون: attribute مطابقًا: size."، "between" => " يجب أن تكون السمة: بين: min -: max. "،" in "=>" يجب أن تكون السمة: واحدة من الأنواع التالية: القيم "،)؛ماذا لو كنت بحاجة إلى تحديد الرسالة المطلوبة ، ولكن لسمة البريد الإلكتروني فقط؟ لا مشكلة. ما عليك سوى تحديد الرسالة باستخدام الخاصية attribute_rule naming:
تحديد رسالة لسمة معينة: $ messages = array ("email_required" => "نحتاج إلى معرفة عنوان بريدك الإلكتروني!"،)؛في هذا المثال ، سيتم استخدام رسالة الخطأ المخصصة فقط لسمة البريد الإلكتروني ، وإلا فسيتم استخدام الرسائل القياسية.
في الوقت نفسه ، إذا كنت تستخدم الكثير من رسائل الخطأ الخاصة بك ، بما في ذلك جميعها في التعليمات البرمجية الخاصة بك ، فقد يجعلها مرهقة وغير مريحة. لهذا السبب ، من الممكن تحديد المصفوفة الخاصة بك في ملف اللغة:
إضافة مصفوفة مخصصة إلى ملف اللغة: "custom" => array ("email_required" => "نحتاج إلى معرفة عنوان بريدك الإلكتروني!" ،) قواعد تحقق مخصصةيوفر Laravel عددًا من قواعد التحقق القوية. ومع ذلك ، يمكنك إنشاء الخاصة بك. هناك اثنان طرق بسيطةإنشاء قواعد التحقق من الصحة. كلاهما موثوق في الاستخدام. عليك فقط اختيار الأنسب لمشروعك.
تسجيل قاعدة التحقق الخاصة بك: Validator :: register ("رائع" ، الوظيفة ($ attribute ، $ value ، $ parameters) (إرجاع $ value == "(! LANG: awesome"; }); !}في هذا المثال ، سجلنا قواعد تحقق جديدة لفئة Validator. تأخذ هذه القاعدة ثلاث معاملات. الأول هو اسم السمة التي يتم التحقق منها ، والثاني هو قيمة السمة التي يتم التحقق منها ، والثالث عبارة عن مجموعة من المعلمات التي تم تعيينها للقاعدة.
هكذا تبدو استدعاء القاعدة الخاص بك:
قواعد $ = مجموعة ("اسم المستخدم" => "مطلوب | رائع" ،) ؛
بالطبع ، أنت بحاجة إلى تحديد رسالة خطأ للقاعدة الجديدة. يمكنك القيام بذلك إما في رسائل مصفوفة خاصة:
$ messages = array ("awesome" => "قيمة السمة يجب أن تكون رائعة!"،)؛ Validator = Validator :: make (Input :: get ()، $ rules، $ messages)؛
أو عن طريق إضافة إدخال للقاعدة في language / en / validation.php:
"رائع" => "يجب أن تكون قيمة السمة رائعة!"،
كما هو مذكور أعلاه ، يمكنك تحديد المعلمات والحصول عليها في قاعدة مخصصة:
// عند بناء قاعدة ... قواعد $ = مجموعة ("اسم المستخدم" => "مطلوب | رائع: نعم" ،) ؛ // في القاعدة ... Validator :: register ("رائع" ، دالة (سمة $ ، قيمة $ ، معلمات $) (إرجاع قيمة $ == $ معلمات ؛)
في هذا المثال ، ستتلقى معلمة الوسيطات لقاعدة التحقق الخاصة بك مصفوفة تحتوي على عنصر واحد: "نعم".
هناك طريقة أخرى لإنشاء قواعد التحقق المخصصة وتخزينها وهي توسيع فئة Validator. علاوة على ذلك ، بفضل مساحات الأسماء في Laravel ، يمكن لهذه الفئة توسيع نفسها. هكذا تخلق نسخة جديدةمدقق يحتوي على جميع الميزات الموجودة سابقًا جنبًا إلى جنب مع الإضافات الجديدة. يمكنك حتى اختيار تجاوز بعض الطرق الافتراضية إذا كنت ترغب في ذلك. لنلقي نظرة على مثال:
أولاً ، أنشئ فئة Validator ترث فئة Laravel \ Validator وضعها في التطبيق / المكتبات:
تعريف فئة مخصصة: