التحقق من صحة نموذج CodeIgniter مع مثال إرسال النموذج
النموذج في CodeIgniter
توفر النماذج وسيلة للمستخدمين للتفاعل مع التطبيق وإرسال البيانات. ويمكن استخدامها في نموذج الاتصال بنا الذي يمكن لزائر الموقع الإلكتروني ملؤه وإرسال المعلومات إلينا. وعادة ما يتم تخزين المعلومات المستلمة في قاعدة البيانات أو إرسالها عبر البريد الإلكتروني.
هيكل نموذج HTML
يُظهر الكود التالي بنية نموذج HTML النموذجي.
<form id="frmUsers" name="frmUsers" method="POST" action="create_user.php"> <input type="text" id="user_id" name="user_id"> <input type="password" id="password" name="password"> <input type="submit" value="Submit"> </form>
هنا،
- … هي علامتي الفتح والإغلاق للنموذج. تحدد سمة المعرف والاسم اسم ومعرف النموذج. تحدد سمة الطريقة فعل HTTP الذي سيتم استخدامه. يتم تحديد هذا عادةً بفعل POST
- يحدد عناصر النموذج. سمة الاسم هي اسم المتغير الذي يتم إرساله إلى الخادم الخلفي للمعالجة.
مساعد نموذج CodeIgniter
HTML رائع وسهل الفهم والكتابة، ولكن كود إغنيتر يجعل الأمور أكثر بساطة. يحتوي CodeIgniter على وظائف مدمجة لإنشاء نماذج HTML.
دعنا نفكر في كود إرسال نموذج CodeIgniter التالي الذي يستخدم مساعد النموذج لإنشاء نموذج
<?php
echo form_open('create_user.php', ['id' => 'frmUsers']);
echo form_label('User Id', 'user_id');
echo form_input(['name' => 'user_id']);
echo form_label('Password', 'password');
echo form_input(['type' => 'password', 'name' => 'password']);
echo form_submit('btnSubmit', 'Create User');
echo form_close();
?>
هنا،
- echo form_open('create_user.php', ['id' => 'frmUsers']); ينشئ علامة فتح النموذج، ويضبط الإجراء على POST Verb ويضبط عنوان URL للإجراء على create_user.php
- echo form_label('معرف المستخدم', 'user_id'); ينشئ تسمية تقرأ معرف المستخدم لحقل الإدخال باسم user_id.
- صدى form_input(['name' => 'user_id']); ينشئ حقل إدخال لنوع النص باسم user_id
- echo form_submit('btnSubmit', 'إنشاء مستخدم'); ينشئ زر إرسال مع تسمية إنشاء مستخدم
- صدى form_Close(); يغلق النموذج
كما ترون من كود CodeIgniter أعلاه، فإن مساعدي النماذج يجعلون من السهل علينا إنشاء نماذج باستخدام PHP خالص. من خلال تمرير السمات إلى الأساليب المساعدة للنموذج، يمكننا تخصيص HTML الذي تم إنشاؤه للنموذج.
يقوم الكود أعلاه بإنشاء كود نموذج HTML التالي
<form action="http://localhost:3000/index.php/create_user.php" id="frmUsers" method="post" accept-charset="utf-8">
<label for="user_id">User Id</label>
<input type="text" name="user_id" value=""/>
<label for="password">Password</label>
<input type="password" name="password" value=""/>
<input type="submit" name="btnSubmit" value="Create User"/>
</form>
تتمثل أكبر مزايا استخدام مساعد النموذج في أنه ينشئ تعليمات برمجية صحيحة لغويًا تلتزم بمعايير HTML المحددة.
يمكنك الرجوع إلى وثائق CodeIgniter الرسمية لمزيد من التفاصيل
مثال على نموذج CodeIgniter
بعد تغطية أساسيات CodeIgniter، دعنا نعود إلى مشروعنا التعليمي الذي كنا نعمل عليه طوال هذا الوقت سلسلة دروس CodeIgniterباختصار، يقوم مشروع البرنامج التعليمي ببناء تطبيق لإدارة جهات الاتصال والذي سيقوم بتخزين التفاصيل في قاعدة البيانات.
إنشاء اتصال
في البرنامج التعليمي السابق، قمنا بإنشاء مسارات لتطبيقاتنا وعروضنا البسيطة. افتح التطبيق/طرق العرض/جهات الاتصال/create.php
قم بتعديل الكود الخاص بـ create.php كما يلي
<div class="column">
<h2 class="title">Create Contact</h2>
<form action="<?= base_url('contacts/store') ?>" method="POST">
<div class="field">
<label class="label">Contact Name</label>
<div class="control">
<input id="name" name="name" class="input" type="text" placeholder="Type the contact name">
</div>
</div>
<div class="field">
<label class="label">Contact Number</label>
<div class="control">
<input id="name" name="name" class="input" type="text" placeholder="Type the contact number">
</div>
</div>
<div class="field">
<label class="label">Email Address</label>
<div class="control">
<input id="email" name="email" class="input" type="email" placeholder="Type the email address">
</div>
</div>
<div class="field is-grouped">
<div class="control">
<button class="button is-link">Save Contact</button>
</div>
</div>
</form>
</div>
ملاحظة: يستخدم الكود أعلاه HTML عادي لإنشاء النماذج.
دعونا نرى الآن كيف تبدو نماذجنا في متصفح الويب
قم بتحميل عنوان URL التالي إلى متصفح الويب الخاص بنا.
http://localhost:3000/contacts/create
إذا كنت تقوم بإنشاء مشروع تعليمي، فيجب أن تكون قادرًا على رؤية ما يلي
التحقق من صحة النموذج في CodeIgniter
تلعب عملية التحقق دورًا بالغ الأهمية عند معالجة البيانات من النماذج. لنفترض أن أحد المستخدمين يقوم بالتسجيل على موقع ويب؛ نريد التأكد من أنه قام بتعبئة التفاصيل المطلوبة وعنوان البريد الإلكتروني. نحتاج إلى التأكد من أن عنوان البريد الإلكتروني الذي تم إدخاله صالح. إذا كنا نعمل بقيم التاريخ، فنحن نريد التأكد من أن نطاقات التاريخ صالحة. لن نضطر إلى قبول تاريخ يحتوي على 32 يومًا في الشهر وما إلى ذلك.
التحقق من الصحة يحل المشاكل المذكورة أعلاه. يتم التحقق من صحة CodeIgniter على جبهتين (2) عند العمل مع تطبيقات الويب.
يتم التحقق من جانب العميل من جانب متصفح الويب. يتضمن هذا عادةً استخدام HTML و Javaيعمل التحقق من جانب العميل على تحسين الأداء حيث يتم تنفيذ كل شيء على جانب العميل. لذا، ليست هناك حاجة لإرسال البيانات إلى الخادم. العيب في التحقق من جانب العميل هو أن المستخدم لديه القدرة على التحكم فيها. إذا اعتمدت على Javaنص للتحقق من صحة المستخدم وتعطيله Javaإذا قمت بإدخال نص في المتصفح، فسوف تفشل عملية التحقق الخاصة بك.
يتم التحقق من جانب الخادم على جانب الخادم. الجانب السلبي لهذا التحقق هو أنه يتعين على المستخدم إرسال البيانات إلى الخادم للمعالجة وانتظار الرد. وهذا يستهلك موارد الشبكة وقد يؤدي إلى انخفاض الأداء. الميزة الرئيسية للتحقق من الصحة من جانب الخادم هي أن لديك تحكمًا أكبر وأنك مطمئن إلى أن قواعد التحقق الخاصة بك تعمل حتى إذا قام المستخدم بتعطيل Javaالنص في المتصفح.
الإستراتيجية الأفضل هي استخدام جانب العميل كاستراتيجية التحقق الأساسية وجانب الخادم كآلية احتياطية.
إضافة قواعد التحقق من صحة النموذج
يحتوي CodeIgniter على مكتبة تحقق مدمجة. يتم تحميل المكتبة باستخدام السطر التالي
$this->load->library('form_validation');
يمكن استخدام مكتبة التحقق من صحة النماذج CodeIgniter لإجراء بعض الإجراءات التالية
- التحقق من الحقول المطلوبة. يقوم هذا بفحص القيم المرسلة وإرجاع خطأ إذا كان الحقل الذي تم وضع علامة عليه على أنه مطلوب لا يحتوي على قيمة
- التحقق من صحة نوع البيانات – قد تتطلب بعض الحقول قيمًا رقمية فقط. إذا تم اكتشاف قيمة غير رقمية، فسترجع المكتبة خطأ. تم أيضًا إحباط تنفيذ إرسال النموذج.
- التحقق من صحة الطول - تتطلب بعض أنواع البيانات أن تحتوي الحقول على حد أدنى أو أقصى معين لعدد الأحرف. مكتبة التحقق من الصحة تكون مفيدة في مثل هذه الحالات.
- تعقيم البيانات – تتمتع مكتبة التحقق أيضًا بإمكانيات إزالة التعليمات البرمجية الضارة من البيانات المرسلة لأسباب أمنية. على سبيل المثال، إذا كانت القيم المقدمة نشطة Javaإذا كان لديك كود Script أو SQL Injection، فإن مكتبة التحقق تزيل الكود الضار وتجعله عديم الفائدة.
- التحقق من صحة حقول قاعدة البيانات الفريدة - لنفترض أن لديك نموذجًا يقوم المستخدمون فيه بالتسجيل باستخدام عنوان بريد إلكتروني. قد ترغب في التأكد من أن عنوان البريد الإلكتروني فريد. تسهل المكتبة عليك التحقق من البيانات المرسلة مقابل جدول وحقل قاعدة بيانات. يتيح لك هذا معرفة أن القيمة قد تم أخذها بالفعل.
يتم تعيين قواعد التحقق باستخدام التنسيق التالي
$this->form_validation->set_rules('field','human readable field','rule',['custom message']);
هنا،
- حدد "الحقل" اسم حقل النموذج ليتم التحقق من صحته بواسطة المكتبة
- يحدد "حقل قابل للقراءة من قبل الإنسان" تنسيق الحقل القابل للقراءة من قبل الإنسان أثناء التحقق من الصحة. يتم عرض هذا مرة أخرى للمستخدم عند حدوث خطأ.
- تحدد "القاعدة" قاعدة التحقق التي سيتم تطبيقها مثل المطلوبة والرقمية والتحقق مما إذا كان الحد الأدنى للطول هو ... إلخ.
- ['الرسالة المخصصة'] اختيارية ويمكن استخدامها لتعيين رسالة تحقق مخصصة يجب عرضها عند فشل قاعدة التحقق.
فيما يلي نموذج إرسال في CodeIgniter كمثال للتحقق من صحة اسم جهة الاتصال
$this->form_validation->set_rules('contact_number', 'Contact Number', 'required');
هنا،
- يتحقق الرمز أعلاه مما إذا كان قد تم إدخال الحقل contact_number. إذا لم يتم تعيينه، فسيتم إرجاع خطأ يفيد بأن حقل رقم الاتصال مطلوب.
لتشغيل التحقق من الصحة وفقًا للقواعد المحددة، نستخدم الوظيفة التالية لمكتبة التحقق من الصحة
$this->form_validation->run()
إذا أعاد الكود أعلاه خطأ، فهذا يعني أن قاعدة واحدة أو أكثر قد فشلت. إذا كانت النتيجة صحيحة، فهذا يعني أن جميع قواعد التحقق من الصحة قد تم اجتيازها، ويمكنك متابعة المزيد من الإجراءات.
دعنا نلقي نظرة على المزيد من الأمثلة لقواعد التحقق. لنفترض أنك تريد التحقق من صحة بعض الحقول، مثل اسم جهة الاتصال والرقم وعنوان البريد الإلكتروني، فيمكنك استخدام الكود التالي لإنجاز ذلك.
$rules = array(
array(
'field' => 'contact_name',
'label' => 'Contact Name',
'rules' => 'required'
),
array(
'field' => 'contact_number',
'label' => 'Contact Number',
'rules' => 'required',
'errors' => array(
'required' => 'You must provide a %s.',
),
),
array(
'field' => 'email_address',
'label' => 'Email Address',
'rules' => 'required'
)
);
$this->form_validation->set_rules($rules);
هنا،
- في مثال التحقق من صحة البريد الإلكتروني أعلاه في CodeIgniter، نقدم مجموعة من الحقول مع قواعد لوظيفة set_rules في المكتبة. وهذا يجعل الأمر أسهل عند التحقق من صحة بعض الحقول.
التحقق الفريد
إذا أردنا التحقق من صحة رقم الاتصال للتأكد من عدم حفظ نفس الرقم مرتين، فيمكننا استخدام القاعدة التالية للقيام بذلك.
$this->form_validation->set_rules('contact_number', 'Contact Number','required|is_unique[contacts.contact_number]');
هنا،
- | يتم استخدامه لتوجيه قواعد متعددة معًا
- يتحقق is_unique[contacts.contact_number] مما إذا كانت قيمة رقم جهة الاتصال فريدة مقابل قيم حقل رقم جهة الاتصال في جهات اتصال جدول قاعدة البيانات.
عرض رسائل خطأ التحقق من صحة النموذج
في حالة حدوث خطأ أثناء معالجة النموذج، يمكنك استخدام الكود التالي لعرض أخطاء التحقق التي حدثت
<?php echo validation_errors(); ?>
هنا،
- تقوم الدالة أعلاه بإرجاع كافة الأخطاء التي حدثت.
تعبئة بيانات النموذج المقدمة: النماذج اللاصقة
تحتوي بعض النماذج على العديد من الحقول، وإذا حدث خطأ، فأنت تريد التأكد من حفظ البيانات التي تمت إضافتها بشكل صحيح. تحتوي مكتبة التحقق على آليات لإنجاز ذلك. نقوم بذلك باستخدام الكود التالي.
<?php echo set_value('field_name'); ?>
هنا،
- يعرض الرمز أعلاه هذا الإدخال الذي أدخله المستخدم.
للحصول على دليل مرجعي كامل حول الطرق المتوفرة ضمن مكتبة التحقق من الصحة، يمكنك الرجوع إلى وثائق API من دليل المستخدم الرسمي لـ CodeIgniter
مثال للتحقق من صحة نموذج CodeIgniter
خلال هذه السلسلة التعليمية، قمنا بإضافة المزيد من التعليمات البرمجية إلى مشروعنا التعليمي وهو تطبيق لإدارة جهات الاتصال. في هذا القسم، سنقوم بتحميل مكتبة التحقق من الصحة ونرى كيف يمكننا وضعها موضع الاستخدام العملي باستخدام تطبيق نموذجي من العالم الحقيقي.
قم بتعديل رمز المسارات كما يلي لتضمين طريقة المتجر
$route['default_controller'] = 'welcome'; $route['contacts'] = 'contacts'; $route['create'] = 'contacts/create'; $route['store'] = 'contacts/store'; $route['edit/:id'] = 'contacts/edit'; $route['update/:id'] = 'contacts/update'; $route['delete/:id'] = 'contacts/delete'; $routes['users'] = 'welcome/users';
لنقم الآن بتحميل مكتبة التحقق من صحة النماذج في وحدة تحكم جهات الاتصال وتعيين بعض قواعد التحقق من الصحة.
قم بتعديل الكود كما هو موضح في التحقق من صحة النموذج أدناه في مثال CodeIgniter:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Contacts extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper('url', 'form');
$this->load->library('form_validation');
}
public function index() {
$this->load->view('header');
$this->load->view('contacts/index');
$this->load->view('footer');
}
public function create() {
$this->load->view('header');
$this->load->view('contacts/create');
$this->load->view('footer');
}
public function store() {
$rules = array(
array(
'field' => 'contact_name',
'label' => 'Contact Name',
'rules' => 'required'
),
array(
'field' => 'contact_number',
'label' => 'Contact Number',
'rules' => 'required',
'errors' => array(
'required' => 'You must provide a %s.',
),
),
array(
'field' => 'email_address',
'label' => 'Email Address',
'rules' => 'required'
)
);
$this->form_validation->set_rules($rules);
if ($this->form_validation->run() == FALSE) {
$this->load->view('header');
$this->load->view('contacts/create');
$this->load->view('footer');
} else {
redirect(base_url('contacts'));
}
}
public function edit($id) {
$this->load->view('header');
$this->load->view('contacts/edit');
$this->load->view('footer');
}
public function update($id) {
$this->load->view('header');
$this->load->view('contacts/update');
$this->load->view('footer');
}
public function delete($id) {
$this->load->view('header');
$this->load->view('contacts/delete');
$this->load->view('footer');
}
}
هنا،
- تحدد مجموعات $rules = array(...) قواعد التحقق من الصحة
- $this->form_validation->set_rules($rules); يحدد قواعد التحقق من الصحة
- إذا تم تشغيل قواعد التحقق (if ($this->form_validation->run() == FALSE) {…}، وإذا فشلت، يتم إعادة عرض النموذج مع أخطاء التحقق. إذا نجحت عملية التحقق، فإننا ببساطة نعيد التوجيه إلى صفحة جهات الاتصال بالقائمة. في الظروف العادية، نكتب البيانات في قاعدة البيانات. سنفعل ذلك في الدروس التعليمية التالية عندما ننظر إلى قواعد البيانات.
قم بتعديل طريقة عرض الإنشاء في كود application/contacts/create.php كما هو موضح في مثال CodeIgniter للتحقق من صحة النموذج أدناه:
<div class="column">
<h2 class="title">Create Contact</h2>
<div class="notification is-danger">
<?php echo validation_errors(); ?>
</div>
<form action="<?= base_url('contacts/store') ?>" method="POST">
<div class="field">
<label class="label">Contact Name</label>
<div class="control">
<input id="contact_name" name="contact_name" class="input" type="text" value="<?php echo set_value('contact_name'); ?>" placeholder="Type the contact name">
</div>
</div>
<div class="field">
<label class="label">Contact Number</label>
<div class="control">
<input id="contact_number" name="contact_number" class="input" type="text" value="<?php echo set_value('contact_number'); ?>" placeholder="Type the contact number">
</div>
</div>
<div class="field">
<label class="label">Email Address</label>
<div class="control">
<input id="email_address" name="email_address" class="input" type="email" value="<?php echo set_value('email_address'); ?>" placeholder="Type the email address">
</div>
</div>
<div class="field is-grouped">
<div class="control">
<button class="button is-link">Save Contact</button>
</div>
</div>
</form>
</div>
هنا،
- نعرض الأخطاء التي تحدث إن وجدت أثناء عملية التحقق من الصحة
- يضبط القيمة التي تم تعيينها مسبقًا إن وجدت
يجب عليك تحميل عنوان URL التالي في متصفح الويب الخاص بك. ثم انقر فوق "إنشاء جهة اتصال" دون إدخال أي قيم
ملخص
- توفر النماذج طريقة للمستخدمين للتفاعل مع التطبيق وإرسال البيانات.
- يعد HTML رائعًا وسهل الفهم والكتابة، ولكن CodeIgniter يجعل الأمور أكثر بساطة. يحتوي CodeIgniter على وظائف مدمجة لإنشاء نماذج HTML.
- يلعب التحقق من الصحة دورًا بالغ الأهمية عند معالجة البيانات من النماذج.
- في هذا البرنامج التعليمي، رأينا استراتيجيات التحقق الرئيسية وإيجابياتها وسلبياتها. لقد تعلمنا أيضًا كيفية تعيين قواعد التحقق من الصحة وإخراج رسائل الخطأ باستخدام مكتبة التحقق المدمجة في CodeIgniter. لقد أنهينا الدرس بتطبيق المعرفة المكتسبة في التطبيق العملي.


