Codeigniter Form Doğrulama

Codeigniter ile geliştirme yaparken form doğrulama işlemlerinde öncelikle form_validation kütüphanesini yüklemeniz gerekmektedir. Form gönderildikten sonra hatalar oluşması durumunda formun kullanıcıya girmiş olduğu veriler silinmeden yeniden sunulması için ihtiyaç duyulacak işlevler ise form_helper kütüphanesinde bulunmaktadır. Bu kütüphaneleri şu şekilde projenize dahil edebilirsiniz.
[code lang=”php”]
$this->load->helper(‘form’);
$this->load->library(‘form_validation’);
[/code]
Kütüphaneleri yükledikten sonra bu kütüphane ile ilgili ayarlar ve kuralların belirtilmesi gerekiyor. Basit bir kullanıcı kayıt formunda kullanılabilecek form ayar ve kuralları şöyledir.
[code lang=”php”]
$this->form_validation->set_error_delimiters(‘‘, ‘‘);
$this->form_validation->set_rules(‘username’, ‘Kullanıcı Adı’, ‘trim|required|min_length[5]|max_length[128]|xss_clean|callback_username_exist’);
$this->form_validation->set_rules(‘password’, ‘Şifre’, ‘trim|required|matches[passconf]|min_length[5]|max_length[64]|xss_clean’);
$this->form_validation->set_rules(‘passconf’, ‘Şifre’, ‘trim|required|min_length[5]|max_length[64]|xss_clean’);
$this->form_validation->set_rules(‘firstname’, ‘Ad’, ‘trim|required|min_length[3]|max_length[128]|xss_clean’);
$this->form_validation->set_rules(‘lastname’, ‘Soyad’, ‘trim|required|min_length[3]|max_length[128]|xss_clean’);
$this->form_validation->set_rules(‘displayname’, ‘Görünür İsim’, ‘trim|required|min_length[5]|max_length[128]|xss_clean’);
$this->form_validation->set_rules(’email’, ‘E-Posta’, ‘required|valid_email|callback_email_exist’);
[/code]
Bu kod parçacığında yapılanları kısaca açıklayalım. Öncelikle “set_error_delimiters” ile hatalar ekrana basılırken kullanılmasını istediğiniz html etiketler ve css sınıflar tanımlanmıştır. Ardından “set_rules” ile html formunda bulunan bütün girdi alanları için kurallar yazılır. Kurallar üç bölümden oluşmaktadır. İşlevin çağrılması için kullanılacak yapı şu şekildedir.
[code lang=”php”]
set_rules(‘girdi ismi’,’girdi etiketi’,’denetim işlevleri’)
[/code]
Kullanılabilecek tüm denetim işlevlerine buradan erişebilirsiniz. Denetim işlevleri değer alarak özelleştirilebilmektedir. Örneğin:Girilen şifrenin doğrulamasını yapmak için yeni bir işlev yazmanıza gerek yoktur, eşleştirme kontrolünde kullanılan “matches[passconf]” işlevinde köşeli parantezler arasında eşleşecek diğer girdi ismini tanımlanabilmektedir. Ayrıca kendinize özgü denetim işlevi yazılabilmektedir. Örneğin buradaki “callbak_username_exist” işlevi veritabanında aynı kullanıcı adı ile başka bir kullanıcı olup olmadığını kontrol etmektedir. Bu işlev form denetimi yaptığınız controller sınıfı içerisinde tanımlanmış olmalıdır. Basit bir kullanıcı ismi varlığı kontrol işlevi şu şekildedir.
[code lang=”php”]
function username_exist($username)
{
$this->load->model(‘users_model’,’User’);
if($this->User->getInfoByUsername($username) != false)
{
$this->form_validation->set_message(“username_exist”, “Kullanıcı Adı mevcut, lütfen farklı bir kullanıcı adı seçiniz.”);
return false;
}else{
return true;
}
}
[/code]
Form kontrolü ile ilgi tüm ayarlar ve kurallar düzenlendikten sonra “$this->form_validation->run()” işlevi çağrılarak formun kontrolü şu şekilde yapılabilmektedir.
[code lang=”php”]
if ($this->form_validation->run() == FALSE)
{
// Formda hata varsa yapılacak işlemler…
}else{
// Formda hata yoksa yapılacak işlemler
}
[/code]

Leave a Reply

Your email address will not be published. Required fields are marked *