Codeigniter Form Validation Kullanımı

Merhaba arkadaşlar,
Mobilhanem.com’ da yayınladığımız Codeigniter Dersleri setimize 8. yazımızla devam ediyoruz. Önceki dersimizde Model Dosyası kullanımı konusundan bahsettik. Bu dersimizde ise Codeigniter Form Validation kullanımı konusundan bahsedeceğiz.

Form Validation Nedir? Neden Kullanılır ?

Form validation kullanıcıdan aldığımız verilerin doğru formatta olup olmadığını kontrol etmek amacıyla kullanılan bir yapıdır. Örnek vericek olursak kullanıcının girdiği e-mail adresinin doğru formatta olup olmadığını, şifrenin bizim istediğimiz uzunlukta ya da  kısalıkta olup olmadığını, Kullanıcının girdiği telefon numarası bilgisinin doğru formatta olup olmadığını kontrol etmek isteriz. Ayrıca Form Validation siteleri sisteme zarar vermek isteyen kötü niyetli kişilerden de korur.

Codeigniter Form Validation Kullanımı

Konuya girmeden önce Codeigniter’ da Form validation konusunu anlatırken kullanacağım örnekten bahsetmek istiyorum. Bu konuyu anlatırken bir siteye kayıt işlemi yapılırken kullanıcının karşısına çıkabilecek bir form’ u baz alacağım. Konuyu anlatırken bootstrap ile tasarlanmış hazır bir tasarımdan faydalanacağım. Fakat siz eğer tasarım konusunda iyiyim diyorsanız aynı formu kendiniz de tasarlayabilirsiniz.

Bu dersi Veritabanı işlemlerine giriş dersimden beri kullandığım veritabanına uyeler adında bir tablo ekleyerek işlemleri anlatmaya başlayacağım. Bu tabloda Id, username, email, password gibi alanlar olacak. Kullanıcı bu alanlar için verileri karşısına gelecek formdan dolduracak ve eğer veriler Form Validation’ dan başarı ile geçerse veriler tabloya kaydolucak.

Bu işlemleri yaparken Framework yapısında yapılması gereken konfigürasyonlardan bahsetmeyeceğim çünkü bu konulardan önceki yazılarımda detaylı olarak bahsettim.

Veritabanında uyeler tablosunun oluşturulması

Oluşturduğumuz tablonun tasarımı aşağıda bulunan resimdeki gibi olacaktır.

Form Validation veritabanı tasarımı

Konuyu anlatırken kullanacağım form ise aşağıdaki gibi olacaktır.

Form Validations Form tasarımı

Kurallar

KuralParametreAçıklamaÖrnek
requiredYokForm ögesi boş False döner.
matchesVarForm ögesi parametre aldığı form ögesi ile eşleşiyorsa True döner.matches[form_elemani]
regex_matchVarForm ögesi regular expression değeriyle eşleşmezse False döner.regex_match[/regex/]
differsVarForm ögesi parametre aldığı form ögesinden farklı değilse False döner.differs[form_elemani]
is_uniqueVartablo_adi.kolon_adi şeklinde parametre alır ve değerini aldığı form elementinin parametre aldığı tabloda ve kolonda unique olup olmadığını kontrol eder. Bu işlemin gerçekleştirilebilmesi için veritabanı konfigürasyonunun yapılmış olması gerekir.is_unique[tablo_adi.kolon_adi]
min_lengthVarKural olarak konulduğu form elementi’ nin karakter sayısı parametre aldığı karakter sayısından az ise False döner.min_length[3]
max_lengthVarKural olarak konulduğu form elementi’ nin karakter sayısı parametre aldığı karakter sayısından fazla ise False döner.max_length[50]
valid_urlYokGönderilen url’ in formatı yanlış ise False döner.
valid_emailYokGönderilen email’ in formatı yanlış ise False döner.
valid_ipVarParametre aldığı Ip formatına (Ipv4,Ipv6) göre, Ip formatı hatalı ise False döner.valid_ip[ipv4]

Kullanacağımız validation kontrollerin’ den bahsedelim

  • username, unique (benzersiz) olsun (aynı username ile başka kullanıcı siteye kayıt olamasın) ve 50 karakterden fazla olamasın ve 5 karakterden de az olamasın.
  • email, doğru formatta olup olmadığı kontrol edilsin ve email de unique olsun.
  • password, en az 5, en fazla ise 30 karakterden oluşsun ve Confirm Password ile eşleşip eşleşemediği kontrol edilsin.
  • Tüm alanların girilmesini ise zorunlu tutalım.

Form validation’ ları kullanmaya başlayalım

Form dosyasını Home controller’ a ait index Action’ unda sayfaya yükleyeceğim. Bu işlem için gerekli kodlar aşağıdaki gibi olacaktır.

Sayfaya yükleyeceğimiz form.php adındaki View dosyasına ait kodlar ise aşağıdaki gibi olacaktır.

Yukarıdaki kodlarda da gördüğünüz üzere form’ un post edileceği Action Home Controller’ ının register Action’ u olacaktır. İlk olarak register Action’ unda Codeigniter bünyesinde bulunan Form Validation kütüphanesini yüklememiz gerekmektedir. Daha sonra ise Kuralları ve bu kurallara uyulmadığında kullanıcıya gösterilecek olan uyarı mesajlarını yazacağız.

set_rules metodu kullanımı

set_message metodu kullanımı

Bu metod ile validasyon kuralları sonucu karşılaşan hatalara ait kendi hata mesajlarımızı yazarız. Bu metoda ait farklı overloadlar vardır fakat ben parametre olarak dizi alan overload’ unu kullanacağım.

Register Action’ unu yazalım

Form View Dosyasını Düzenleyelim

Form view dosyasında hataları listelemek için bootstrap’ in alertlerinden danger olanından faydalanacağım. Hataların gösterileceği konum ve bu tasarıma ait kodlar ise aşağıdaki gibi olacaktır.

Form Validation errors

View Dosyasında Hataların Gösterilmesi

View dosyasına gönderilen veriler sayfa yüklendiğinde hata ile karşılaşmamız adına if (!empty($form_errors)) satırında kontrolden geçirilir. Eğer bu kontrolü yapmazsak $form_errors bulunamadı hatası ile karşılaşırız.

Eğer bu işlemleri yaparsak karşılaşacağımız çıktır resimdeki gibi olacaktır.

Form validation

Bu şekilde form’ u doldurarak diğer kuralları siz de tes edebilirsiniz. Fakat is_unique gibi kuralları test etmeniz için tablonuzda kayıt olması gerekmektedir. Veritabanına kayıt ekleme işlemine geçtiğimiz yazılarda değindiğimden bu yazıda tekrar değinmek istemiyorum. Fakat siz test etmek isterseniz direkt olarak veritabanına elle kayıt girerek te test edebilirsiniz.

Repopulate (Yeniden doldurma) İşlemi

Form validasyon işlemlerinde her hata ile karşılaşılması sonucu sayfa yenilenir ve formda bulunan veriler temizlenir. Bu işlem sitemizi kullanan kullanıcılar açısından can sıkıcı olabilir. Bunun önüne geçmek için Re-populate işlemi yapılır ve böylece her hata ile karşılaşıldığında form verileri silinmez.

Bu işlemi gerçekleştirmek için Repopulate işlemini uygulayacağımız html elementinin value attribute’ ünden yararlanılır. Bu işlem için Codeigniter bünyesinde bulunan form_helper’ a ait set_value metodundan faydalanılır. kullanımı ise aşağıdaki gibidir.

set_value metodu parametre olarak değerini dolduracağı html elementinin name attribute’ ünün değerini alır ve yukardaki gibi input elementinin value elementi içinde eğer bir hata set edildiyse html elementinin değerini set et, eğer edilmedi ise boş string (“”) set et şeklinde kullanılır. Bu işlemden sonra eğer sayfada hata olsa bile username değerini aldığımız inputtaki değer yeniden doldurulur. Bu işlemi siz de ödev olarak form içinde bulunan diğer html elementlerine uygulayabilirsiniz.

Codeigniter Dersleri eğitim setinin 8. yazısını burada noktalıyorum. Bu yazımızda Codeigniter Form Validation kullanımı konusundan bahsettik. Konu ile ilgili sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.

Tüm Codeigniter Dersleri‘ ne buradan ulaşabilirsiniz.

 

 

Hüseyin Göztok

Abis Teknoloji - Yazılım Mühendisi - Erciyes Üniversitesi (Lisans) 2013 - 2018

Yorum Yaz

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?