- یکشنبه 26 مهر 1405 ساعت 18:00
- 3.1.9
- کامل شده
- منقضی شده
Form Validation Library قواعد اعتبارسنجی ورودی فرم را تعریف و اجرا میکند. این کتابخانه برای بررسی فیلدهای اجباری، طول متن، قالب ایمیل، عدد، تطابق دو فیلد و قواعد سفارشی استفاده میشود. اعتبارسنجی سمت سرور ضروری است، حتی اگر در مرورگر نیز اعتبارسنجی انجام میدهید.
ساختار و API اصلی
با set_rules() برای هر فیلد Rule تعریف کنید و با run() اعتبارسنجی را اجرا کنید. set_value() مقدار قبلی ورودی را در فرم نگه میدارد، validation_errors() خطاها را برمیگرداند و Callback امکان تعریف منطق اختصاصی را فراهم میکند.
نمونه استفاده
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'ایمیل', 'required|valid_email');
$this->form_validation->set_rules('password', 'گذرواژه', 'required|min_length[12]');
if ($this->form_validation->run() === FALSE) {
$this->load->view('register');
} else {
// persist validated input
}نکته مهم
اعتبارسنجی با پاکسازی خروجی متفاوت است. داده معتبر ممکن است همچنان هنگام نمایش نیاز به Escape داشته باشد و برای عملیات حساس باید مجوز کاربر نیز بررسی شود.
مطالعه مرتبط
برای ادامه مطالعه، MVC، کوئری، ترنزکشن را ببینید.
Ruleهای رایج اعتبارسنجی
| متد یا مفهوم | کاربرد |
|---|---|
required | اجباری بودن فیلد. |
valid_email | بررسی قالب ایمیل. |
min_length[n] و max_length[n] | محدودیت طول متن. |
numeric و integer | بررسی عددی بودن مقدار. |
matches[field] | تطبیق با فیلد دیگر. |
is_unique[table.field] | بررسی یکتا بودن مقدار در دیتابیس. |
callback_method | اجرای تابع اعتبارسنجی سفارشی. |
نحوه استفاده و عیبیابی
در یک Controller ابتدا Library را با Loader بارگذاری کنید، سپس تنظیمات محیطی را به آن بدهید و عملیات را اجرا کنید. نتیجه را از مسیر مشخص دریافت کنید و در صورت شکست، پیام خطا را در Log ثبت کنید. اگر Library به Driver خارجی وابسته است، وجود افزونه PHP یا برنامه موردنیاز را روی سرور بررسی کنید.
در محیط توسعه، مسیر موفق و مسیر خطا را جداگانه آزمایش کنید. ورودی خالی، مقدار نامعتبر، فایل بزرگ، Timeout سرویس خارجی و نبود مجوز نوشتن از سناریوهایی هستند که باید بررسی شوند. منابعی مانند اتصال شبکه و فایلهای موقت را پس از پایان عملیات آزاد کنید.
در بازبینی کد، ترتیب و نتیجه متدهای required، valid_email، min_length[n] و max_length[n]، numeric و integer را بررسی کنید. نام متد بهتنهایی تضمین نمیکند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.