Validation Plugin

Validation(Doğrulama) plugini, post, get, request, vb. yöntemlerle gelen verilerin sunucu tarafında kontrol edip belirlenen kriterlere uymasını zorunlu tutar. Bu kriterlere uymayan durumları kullanıcıya bildirir.

Plugini Dahil Etmek

Validation plugini, controller içerisinde aşağıdaki şekilde uygulamaya dahil edilir;

$this->load->plugin('validation');

Validation Kontrol Kuralları Oluşturma

Doğrulama işleminde uygulanacak olan kontrol kurallarını belirlemek için set_rules() methodu kullanılır. Doğrulanacak nesnelerin isimleri ve doğrulama kriterlerinden oluşan bir dizi değişken parametre olarak verilir.

Parametre Veri Tipi
$rule Array
// Örnek kullanım
$this->validation->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ı
]);

Doğrulama kriterleri belirlenirken, xss saldırılarına karşı önlem olarak filtreleme yapılabilir. Bunun için set_rules() methoduna ikinci parametre olarak true değeri verilir.

// Doğrulama kriterleri, xss filtreleme aktif olacak şekilde belirleniyor.
$this->validation->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);

Kontrol Edilecek Verileri Belirleme

Oluşturulan kontrol kurallarına tabi tutulacak verileri belirlemek için set_data() methodu kullanılır. Array(dizi) tipinde 1 adet parametre alır. Dizinin elemanları, daha önce oluşturulan kontrol kurallarının key değerleri ile kontrol edilecek verilerdir.

Parametre Veri Tipi
$data Array
$this->validation->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ı
]);

Burada önemli olan nokta, kontrol kuralları belirlenirken oluşturulan dizideki key değerleri ile, kontrol edilecek verilerin belirlendiği dizide bulunan key değerleri aynı olmalıdır.

Kontrol İşlemini Gerçekleştirme

Kontrol kuralları ve kontrol edilecek veriler belirlendikten sonra validation(doğrulama) işlemini gerçekleştirmek için is_valid() methodu kullanılır.

// Örnek kullanım
if($this->validation->is_valid() !== true) {
    echo 'Doğrulama başarısız oldu';
} else {
    echo 'Doğrulama başarılı';
}

Doğrulanamayan Verilerin Hata Bilgisini Alma

Validation(Doğrulama) işlemi sonucunda, kontrol kurallarına uymayan verilerin hata bilgilerini almak için errors() methodu kullanılır. Array tipinde sonuç döndürür.

// Örnek kullanım
if($this->validation->is_valid() !== true) {
    foreach($this->validation->errors as $error) {
        echo $error . "\n";
    }
}

Kontrol Kuralları

Kural Açıklama
required İlgili form nesnesinin doldurulmasını zorunlu tutar.
numeric Veri yalnıza numeric karakterler içerebilir.
email Veri geçerli bir e-posta adresi olmak zorundadır.
min_len Verinin karakter sayısı minimum belirtilen sayı kadar olmalıdır. Uzunluk belirtilirken kriter isminden sonra virgül konulup istenen rakam girilir.
max_len Verinin karakter sayısı maximum belirtilen sayı kadar olmalıdır. Uzunluk belirtilirken kriter isminden sonra virgül konulup istenen rakam girilir.
exact_len Verinin karakter sayısı belirtilen sayı kadar olmalıdır. Uzunluk belirtilirken kriter isminden sonra virgül konulup istenen rakam girilir.
alpha Veri yalnızca harf içerebilir (A-Z).
alpha_num Veri yalnızca harf ve rakam içerebilir (A-Z | 0-9).
alpha_dash Veri yalnızca harf, rakam, altçizgi ve dash karakterleri içerebilir (A-Z | 0-9 | _-)
alpha_space Veri yalnızca harf, rakam ve boşluk karakterleri içerebilir (A-Z | 0-9 | )
integer Veri integer tipinde olmalıdır.
boolean Veri boolean tipinde olmalıdır.
float Veri float(ondalık sayı) tipinde olmalıdır.
valid_url Veri geçerli bir URL formatında olmalıdır.
valid_ip Veri geçerli bir IP adresi olmalıdır.
valid_ipv4 Veri IPv4 formatında olmalıdır.
valid_ipv6 Veri IPv6 formatında olmalıdır.
valid_cc Veri geçerli bir kredi kartı numarası olmalıdır.
contains Veri belirtilen karakter ya da karakter grubunu içermelidir. İçermesi istenen karakterler, virgülden sonra belirtilir.
min_numeric Veri tamsayı olmalı ve belirtile değerden küçük olmamalıdır.
max_numeric Veri tamsayı olmalı ve belirtile değerden büyük olmamalıdır.
matches İki form elemanına girilen verileri karşılaştırır.

Örnek kullanımlar aşağıdaki gibidir;

// Örnek kullanım
$this->validation->set_rules['field' => 'required'];
$this->validation->set_rules['field' => 'numeric'];
$this->validation->set_rules['field' => 'email'];
$this->validation->set_rules['field' => 'min_len,6']; // Minimum 6 karakter uzunluğunda olmalı
$this->validation->set_rules['field' => 'max_len,6']; // Maximum 6 karakter uzunluğunda olmalı
$this->validation->set_rules['field' => 'exact_len,6']; // Tam olarak 6 karakter uzunluğunda olmalı
$this->validation->set_rules['field' => 'alpha'];
$this->validation->set_rules['field' => 'alpha_num'];
$this->validation->set_rules['field' => 'alpha_dash'];
$this->validation->set_rules['field' => 'alpha_space'];
$this->validation->set_rules['field' => 'integer'];
$this->validation->set_rules['field' => 'boolean'];
$this->validation->set_rules['field' => 'float'];
$this->validation->set_rules['field' => 'valid_url'];
$this->validation->set_rules['field' => 'valid_ip'];
$this->validation->set_rules['field' => 'valid_ipv4'];
$this->validation->set_rules['field' => 'valid_ipv6'];
$this->validation->set_rules['field' => 'valid_cc'];
$this->validation->set_rules['field' => 'contains,elma']; // ilgili alan elma kelimesini içermelidir
$this->validation->set_rules['field' => 'min_numeric,5']; // Form verisi 5 ten küçük olamaz
$this->validation->set_rules['field' => 'max_numeric,5']; // Form verisi 5 ten büyük olamaz

// Matches kuralı kullanımı
// Password alanı boş bırakılamaz ve en az 8 karakter olmalıdır.
$this->validation->set_rules['password' => 'required|min_len,8']; 
// Password Confirm alanı boş bırakılamaz, en az 8 karakter olmalı ve Password alanına girilen veri ile eşleşmelidir.
$this->validation->set_rules['password_confirm' => 'required|min_len,8|matches,password']; 

// Birden fazla kural tanımlama
$this->validation->set_rules['field' => 'required|email']; // Veri boş olamaz ve geçerli bir e-posta adresi olmalıdır.
$this->validation->set_rules['field' => 'alpha_num|min_len,3|max_len,8']; // Veri alphanumeric karakterler içerebilir ve minimum 3, maksimum 8 karakterden oluşlabilir.