pillinetwork hesabınızla giriş yapın.

CakePHP ile Form Verilerini DoÄŸrulama

Güvenli bir site yaparken dikkat etmemiz gereken en önemli noktalardan biri de kullanıcı girişlerini kontrol etmek ve doğrulamak. Her kullanıcının masum ve iyi niyetli olmadığını düşünerek sitemizi geliştirmeliyiz.
Aslında zor gibi görünen bu yöntemleri CakePHP ile çok kolay yapabiliyoruz. Modelleri tanımlarken $validate isminde bir değişken tanımlayıp gerekli kuralları orada belirtiyoruz.

1
2
3
4
5
6
7
8
9
var $validate = array(
'alanAdi' => array(
'rule' => 'kuralIsmi',
'required' => true,
'allowEmpty' => false,
'on' => 'create',
'message' => 'Hata Mesajı'
)
);

Şeklinde belirtiyoruz. Buradaki 'rule' parametresinin karşısına istediğimiz kuralı girebiliyoruz. Bunlardan bazıları:
alphaNumeric
Girilen değerin sadece harfler ve rakamlardan oluşması gerekir. Aksi takdirde message parametresiyle belirtilen hata mesajı alınır.
1
2
3
4
5
6
var $validate = array(
'kullanici_adi' => array(
'rule' => 'alphaNumeric',
'message' => 'Sadece harfler ve rakamlar kullanılabilir.'
)
);

Buradaki message parametresi ile kullanıcını veriyi hatalı girmesi sonucu göreceği mesajı yazıyoruz.
between
Girilen değerin karakter sayısının hangi aralıkta olacağı belirlenir.
1
2
3
4
5
6
var $validate = array(
'password' => array(
'rule' => array('between', 6, 20),
'message' => ''Şifreniz en az 6 en fazla 20 karakter olmalı"
)
);

date
Girilen değerin belirttiğimiz bir formatta bir tarih olmak zorundadır.
1
2
3
4
5
6
7
var $validate = array(
'kayit_yili' => array(
'rule' => 'date',
'message' => 'YY-MM-DD formatında bir tarih girin.',
'allowEmpty' => true
)
);

allowEmpty parametresi true olduğu zaman bu kısım boş bırakilabilir demektir.
email
Girilen değerin bir eposta adresi olmak zorundadır.
1
2
3
4
5
6
var $validate = array(
'email' => array(
'rule' => array('email', true),
'message' => 'Lütfen doğru e-posta adresi girin.'
)
);

extension
Belirtilen bir dosyanın hangi uzantıda olacağını belirleriz.

1
2
3
4
5
6
var $validate = array(
'resim' => array(
'rule' => array('extension', array('gif', 'jpeg', 'png', 'jpg')),
'message' => 'gif, jpeg, png ve jpg formatlarında resim yükleyebilirsiniz.'
)
);

isUnique
Girilen değerin aynısından başka olmaması için kullanılır.
1
2
3
4
5
6
var $validate = array(
'kullanici_adi' => array(
'rule' => 'isUnique',
'message' => 'Bu kullanıcı adı başkası tarafından kullanılıyor.'
)
);

minLength & maxLength
1
2
3
4
5
6
var $validate = array(
'kullanici_adi' => array(
'rule' => array('maxLength', 15),
'message' => 'Kullanıcı adınız en fazla 15 karakter olabilir.'
)
);

numeric
Girilen değerin sadece rakamlardan oluşması için kullanılır.

url
Girilen değerin bir url olması için kullanılır.

required parametresi
Formda doldurma zorunluluğunun olduğu alanlarda kullanılır.

1
2
3
4
5
6
var $validate = array(
'isim' => array(
'rule' => 'alphaNumeric',
'required' => true
)
);

on parametresi
Bu değer 'create' veya 'update' olabilir. Yazdığımız kuralın veritabanına veri ekleme esnasındamı yoksa veritabanında veri güncelleme esnasındamı çalışacağını belirtir.
CakePHP ile ilgili yazdığım diğer yazıları şuradan, şuradan ve şuradan okuyabilirsiniz.

Spacer
Spacer
/* ceyranci yazdı. 12 Haziran 2009 17:10. 3 yorum var */

Yorumlar

cake'de bu yaklaşım güzel. Her model kendini doğrulamasını yapmalı.. Fakat eğer tek form ile birden fazla modeli ilişiklendirmek istersek nasıl bir yol izlememiz lazım?. Yada bu olaya hiç girmeden mi sorunu çözmeli?

Her modelin kurallarını kendi model dosyasında belirttiğin için pek sorun olmaz. Modelden yapamadıklarını da controllerdan yaparsın.

/* ftoptas */

Cake icin Turkce kaynak problemi var gozlemledigim kadari ile. Bu tip makalelerin artmasi herkes icin yararli olacaktir.Yazi icin tesekkurler.

üye olunpillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.

Bu Yazıyı Tutanlar

Bu yazıyı rapor et. Kural dışı içeriğe rastladığınızda editörlerimize rapor ederek müdahale edilmesini sağlayabilirsiniz. (Hangi durumlarda rapor edebilirim?)

Bu site

Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.

pilliilan

son yorumlar

arama

pillinetwork