آموزش Codeigniter - جلسه یازدهم: اعتبارسنجی فرم ها
هنگام توسعهی اپلیکیشنهای تحت وب، استفاده از فرمها از جمله مهمترین روشها برای دریافت اطلاعات از کاربران محسوب میشود. اما همانطور که در سری آموزشی پیاچپی نیز توضیح داده بودیم، باید اطمینان حاصل کنید که دادههای وارد شده توسط کاربر همان چیزی باشد که به دنبال آن هستیم. یعنی نباید شرایط به گونهای باشد که کاربر بتواند در فیلدی که برای دریافت ایمیل در نظر گرفته شده، چیزی به جز آدرس ایمیل صحیح را وارد کند. فریمورک Codeigniter در این زمینه نیز امکانات و قابلیتهای بسیار خوبی را در اختیار ما قرار داده و با استفاده از آن میتوان اطلاعات وارد شده توسط کاربر را اعتبارسنجی کرد. در ادامهی این مطلب با زومیت همراه باشید تا با ذکر یک مثال، شما را با روش اعتبارسنجی فرم در Codeigniter آشنا کنیم.
مثال:
مثل همیشه پیش از انجام هر کاری، نرمافزار زمپ را اجرا و دو سرور آپاچی و مایاسکیوال را در حال فعال قرار دهید. سپس در پوشهی htdocs یک پوشهی جدید به نام codei-form ایجاد کنید. همانند آنچه در جلسات اولیهی این سری آموزش گفته بودیم، فریمورک را در این پوشه نصب و پیکربندی کنید.
در مسیر application/views یک فایل جدید به نام myform.php بسازید. این صفحه فایل ویو فرم مورد نظر ما است که قصد داریم آن را به کاربر نمایش دهیم. در این فرم کاربر باید نام خود را وارد کند ولی پیش از ثبت، میخواهیم اطمینان حاصل کنیم که وی فرم را خالی نگذاشته باشد و به عبارت دیگر میخواهیم یک اعتبارسنجی ساده روی این فرم انجام دهیم. کد زیر را در فایل ایجاد شده قرار دهید.
</span><span class="pln">My Form</span><span class="tag"> action = "" method = ""> php echo validation_errors(); ?> php echo form_open('form'); ?> Name type = "text" name = "name" value = "" size = "50" /> type = "submit" value = "Submit" /> </form>
حال باید یک فایل نمای دیگر نیز ایجاد کنید. در مسیر application/views یک فایل جدید به نام formsuccess.php ساخته و سپس کد زیر را در آن قرار دهید. این صفحه قرار است پس از موفقیتآمیز بودن ثبت فرم به کاربر نمایش داده شود.
</span><span class="pln">My Form</span><span class="tag"> Your form was successfully submitted! php echo anchor('form', 'Try it again!'); ?>
یک کنترلر جدید به نام Form.php در مسیر application/controller ایجاد کرده و سپس کد زیر را در آن قرار دهید. در این کنترلر به منظور انجام عملیات اعتبار سنجی و نمایش خطاهای احتمالی به کاربر مورد استفاده قرار میگیرد. همچنین در صورت صحیح بودن ورودی، صفحهی formsuccess.php را به کاربر نمایش خواهد داد.
php class Form extends CI_Controller { public function index() { /* Load form helper */ $this->load->helper(array('form')); /* Load form validation library */ $this->load->library('form_validation'); /* Set validation rule for name field in the form */ $this->form_validation->set_rules('name', 'Name', 'required'); if ($this->form_validation->run() == FALSE) { $this->load->view('myform'); } else { $this->load->view('formsuccess'); } } }?>
در توضیح کد بالا، همانطور که میبینید ابتدا در تابع ()index یک هلپر به نام form را لود کردهایم.
/* Load form helper */ $this->load->helper(array('form'));
سپس کتابخانهی مربوط به اعتبارسنجی فرمها را نیز با استفاده از قطعه کد زیر بارگذاری کردهایم:
$this->load->library('form_validation');
سپس با استفاده از کد زیر:
$this->form_validation->set_rules('name', 'Name', 'required');
عملیات اعتبارسنجی را روی فیلد name در فرم یاد شده انجام میدهیم. با استفاده از متد set_rules از کتابخانهی form_validation میتوان قوانین مورد نظر برای اعتبارسنجی هر فیلد را تعیین کرد. از آنجا که هدف ما این بوده که فیلد نام حتما و به صورت اجباری توسط کاربر وارد شود، پس با استفاده از متد یاد شده نوع این فیلد را اجباری تعیین کردهایم.
در نهایت با یک دستور شرطی زیر بررسی میکنیم که اگر فیلد مورد نظر ما در فرم، قوانین تعیین شده را رعایت کرده، کاربر به صفحهی موفقیت آمیزبودن ثبت فرم هدایت شود و در غیر این صورت خطایی مناسب به وی نمایش داده شود.
if ($this->form_validation->run() == FALSE) { $this->load->view('myform'); } else { $this->load->view('formsuccess'); }
حال باید تغییراتی در فایل routes.php ایجاد کنید. بدین منظور این فایل که در مسیر application/config/routes.php قرار دارد را باز کرده و سپس خط زیر را به انتهای کدهای موجود در آن اضافه کنید.
$route['validation'] = 'Form';
اگر همهی مراحل را به درستی انجام داده باشید، با مراجعه به آدرس زیر میتوانید نتیجه کار را مشاهده کنید.
http://127.0.0.1/codei-form/index.php/validation
با اجرای آدرس فوق در مرورگر خود، با صفحهای مثل زیر مواجه خواهید شد.
همانطور که در بالا اشاره کردیم، برای این فرم که شامل فیلدی به نام Name است خاصیت ضروری بودن را پر کردهایم. بدین ترتیب پیش از ثبت شدن اطلاعات فرم به صفحهی مقصد، از خالی نبودن آن اطمینان حاصل کردهایم. حال برای تست پروژه بدون وارد کردن هیچ متن خاصی در فیلد نام، روی دکمهی submit کلیک کنید. در این شرایط با خطا مواجه خواهید شد و پیامی مناسب به شما نمایش داده میشود که اعلام میکند باید حتما فیلد یاد شده را پر کنید. علاوه بر این فرم ما مجددا به کاربر نمایش داده خواهد شد. در این حالت با صفحهای مثل زیر مواجه خواهید شد.
در صورتی که فیلد نام را در فرم بالا به درستی وارد کرده باشید، اعتبارسنجی ما نیز با موفقیت انجام خواهد شد و در نتیجه صفحهی مورد نظر ما به کاربر نمایش داده خواهد شد که در این پروژه چیزی شبیه به زیر خواهد بود.
در مثال بالا، ما فقط یک قانون برای فیلد مورد نظرمان تعیین کردهایم که آن هم ضروری بودن پر کردن فیلد یاد شده بود. اما کتابخانهی اعتبارسنجی فرم در فریمورک Codeigniter شامل قوانین مختلفی است که میتوانید از آنها نیز به منظور اعتبارسنجی فرم خود بهره ببرید. در ادامه لیستی از قوانینی که میتوانید برای اعتبارسنجی فرمهای خود از آنها استفاده کنید را آوردهایم.
لیست قوانین اعتبارسنجی فرمها در فریمورک Codeigniter
اگر سوال یا نظری در مورد مباحث مطرح شده در این جلسه دارید، از طریق بخش دیدگاهها آن را با زومیت و سایر کاربران به اشتراک بگذارید.
نظرات