Herkese merhaba. Bir süredir Titan Mini Framework'ü geliştirmekle uğraştığım için blog ile pek ilgilenemedim. Frameworkün yapısında köklü değişiklikler yaptım ve yakın zamanda major bir sürüm olarak yayınlayacağım. Bu sürümdeki yeniliklerdne birisi de form doğrulama (validation) kütüphanesi. Ancak frameworkü yayınlamadan önce bu kütüphaneyi ayrıca paylaşmak istedim.

Form doğrulama kütüphanesi, oluşturulan web formlarının, sunucu tarafında, belirlenen kriterlere uymasını zorunlu tutar ve uymayan durumları kullanıcıya bildirir. Aşağıdaki adresten kütüphaneyi indirebilir ve inceleyebilirsiniz;

https://github.com/tkaratug/SimpleFormValidation

Kurulum

- Kütüphaneyi kurmak için öncelikle yukarıdaki bağlantıyı kullanarak dosyaları indirin,

- Sıkıştırılmış dosyayı açıp içerisindeki validation.php dosyasını, projenizin bulunduğu dizine kopyalayın.

Kullanım

1) Form doğrulama kütüphanesini kullanmak için öncelikle validation.php dosyasını uygulamamıza dahil ediyoruz ve nesnemizi oluşturuyoruz;

include "validation.php"

$validator = new Validation();

2) Doğrulayacağımız form elemanlarını ve doğrulama kriterlerini belirliyoruz;

$validator->set_rules([
    'fullname'  => 'required|min_len,3', // Zorunlu alan, minimum 3 karakter
    'email'     => 'required|email', // Zorunlu alan, email formatı
    'age'       => 'required|numeric', // Zorunlu alan, numeric tipinde
    'website'   => 'valid_url' // URL formatı
]);

Yukarıdaki kullanımda görüldüğü gibi, set_rules() fonksiyonu, doğrulanacak form alanlarının isimleri ve doğrulama kriterlerinden oluşan bir dizi değişkeni parametre olarak alıyor.

Doğrulama kriterleri belirlenirken, xss saldırılarına karşı önlem olarak form verilerini filtreleyebilirsiniz. Bunun için set_rules() methoduna ikinci parametre olarak "true" değeri vermeniz yeterlidir.

// Doğrulama kriterleri, xss filtreleme aktif olacak şekilde belirleniyor.
$validator->set_rules([
    'fullname'  => 'required|min_len,3', // Zorunlu alan, minimum 3 karakter
    'email'     => 'required|email', // Zorunlu alan, email formatı
    'age'       => 'required|numeric', // Zorunlu alan, numeric tipinde
    'website'   => 'valid_url' // URL formatı
], true);

Doğrulama kriterlerinin tam listesini aşağıda görebilirsiniz.

3) Doğrulama kriterlerini belirledikten sonra formumuzdan gelen verileri de nesnemize gönderiyoruz;

$validator->set_data([
    'fullname'  => $_POST['fullname'], // Ad, soyad alanı
    'email'     => $_POST['email'], // E-Posta alanı
    'age'       => $_POST['age'], // Yaş alanı
    'website'   => $_POST['website'], // Web site alanı
]);

Yukarıdaki kodda, nesnedeki set_data() methoduna, formdan gelen veriler bir dizi değişken içerisinde parametre olarak veriliyor.

Burada önemli olan nokta, doğrulama kriterleri belirlenirken oluşturulan dizideki key değerleri ile, form verilerinin belirlendiği dizide bulunan key değerleri aynı olmalıdır.

4) Bu şekilde kriterlermizi ve verilerimizi belirledikten sonra is_valid() methodu ile form doğrulama işlemini başlatıyoruz;

if($validator->is_valid() !== true) {
    foreach($validator->errors as $error) {
        echo $error . "\n";
    }
}

Yukarıdaki örnekte, $validator nesnemizde bulunan is_valid() methodu ile doğrulama işlemini tamamladık. Sonuç olarak form verilerimiz belirttiğimiz kriterlere uymuyor ise ilgili alanlara ait uyarı mesajları ekrana basılacaktır.

Doğrulama Kriterleri

- required
İlgili alanın doldurulmasını zorunlu tutar.

$validator->set_rules['field' => 'required'];

- numeric
İlgili alan yalnıza numeric karakterler içerebilir.

$validator->set_rules['field' => 'numeric'];

- email
İlgili alan geçerli bir e-posta adresi olmak zorundadır.

$validator->set_rules['field' => 'email'];

- min_len
İlgili alanın karakter sayısı minimum belirtilen sayı kadar olmalıdır. Uzunluk belirtilirken kriter isminden sonra virgül konulup istenen rakam girilir.

$validator->set_rules['field' => 'min_len,6']; // Minimum 6 karakter uzunluğunda olmalı

- max_len
İlgili alanın karakter sayısı maximum belirtilen sayı kadar olmalıdır. Uzunluk belirtilirken kriter isminden sonra virgül konulup istenen rakam girilir.

$validator->set_rules['field' => 'max_len,6']; // Maximum 6 karakter uzunluğunda olmalı

- exact_len
İlgili alanın karakter sayısı belirtilen sayı kadar olmalıdır. Uzunluk belirtilirken kriter isminden sonra virgül konulup istenen rakam girilir.

$validator->set_rules['field' => 'exact_len,6']; // Tam olarak 6 karakter uzunluğunda olmalı

- alpha
İlgili alan yalnızca harf içerebilir (A-Z).

$validator->set_rules['field' => 'alpha'];

- alpha_num
İlgili alan yalnızca harf ve rakam içerebilir (A-Z | 0-9).

$validator->set_rules['field' => 'alpha_num'];

- alpha_dash
İlgili alan yalnızca harf, rakam, altçizgi ve dash karakterleri içerebilir (A-Z | 0-9 | _-)

$validator->set_rules['field' => 'alpha_dash'];

- alpha_space
İlgili alan yalnızca harf, rakam ve boşluk karakterleri içerebilir (A-Z | 0-9 | ).

$validator->set_rules['field' => 'alpha_space'];

- integer
İlgili alan integer tipinde olmalıdır.

$validator->set_rules['field' => 'integer'];

- boolean
İlgili alan boolean tipinde olmalıdır.

$validator->set_rules['field' => 'boolean'];

- float
İlgili alan float tipinde olmalıdır.

$validator->set_rules['field' => 'float'];

- valid_url
İlgili alan URL formatında olmalıdır.

$validator->set_rules['field' => 'valid_url'];

- valid_ip
İlgili alan geçerli bir IP adresi olmalıdır.

$validator->set_rules['field' => 'valid_ip'];

- valid_ipv4
İlgili alan IPv4 formatında olmalıdır.

$validator->set_rules['field' => 'valid_ipv4'];

- valid_ipv6
İlgili alan IPv6 formatında olmalıdır.

$validator->set_rules['field' => 'valid_ipv6'];

- valid_cc
İlgili alan geçerli bir kredi kartı numarası olmalıdır.

$validator->set_rules['field' => 'valid_cc'];

- contains
İlgili alan, belirtilen karakter ya da karakter grubunu içermelidir. İçermesi istenen veri, virgülden sonra belirtilir.

$validator->set_rules['field' => 'contains,elma']; // ilgili alan elma kelimesini içermelidir

- min_numeric
İlgili alana girilen veri tamsayı olmalı ve belirtile değerden küçük olmamalıdır.

$validator->set_rules['field' => 'min_numeric,5']; // Form verisi 5 ten küçük olamaz

- max_numeric
İlgili alana girilen veri tamsayı olmalı ve belirtile değerden büyük olmamalıdır.

$validator->set_rules['field' => 'max_numeric,5']; // Form verisi 5 ten büyük olamaz