Validasyon Kütüphaneleri
"Konsoldan 'php zerocore create-grand-vision' gibi basit bir komutla tüm veritabanı ve tablolarının model dosyasını oluşturabilirsiniz."
Bu kütüphanelerin temel amacı veri ve sistem güvenliğini sağlamaktır.
Validation | Form nesnelerinden gelen değerler üzerinde kontrol yapmak için kullanılır. |
Validator | Verileri kontrolleri yapmak için kullanılır. |
Validate | Bir veriye filtreleme yapmak için kullanılır. |
# Kurulum
ZN SE ve ZN CE dağıtımları için terminal kurulum komutu.
↓ composer require znframework/package-validation
# Validation (ZN >= 0.0.1)
Formlardan post, get gibi yöntemlerle gönderilen verilerin kontrolünü sağlamak için oluşturulmuştur.
# Uygulama
# Yöntemler
ZN + | Tür | Yöntem |
3.0.0 | This | validate(String ...$args) |
3.0.0 | This | secure(String ...$args) |
3.0.0 | This | compare(Int $min, Int $max) |
3.0.0 | This | matchPassword(String $password) |
3.0.0 | This | match(String $data) |
3.0.0 | This | phone(String $pattern) |
3.0.0 | This | pattern(String $pattern, String $extra = NULL) |
5.3.5 | This | between(Float $min, Float $max) |
5.6.4 | This | card(String $type) |
5.6.4 | This | cvc(String $type) |
5.6.4 | This | cardDate(Void) |
5.6.4 | This | messages(Array $messages) |
3.0.0 | This | value(String $name) |
3.0.0 | This | method(String $method) |
1.0.0 | Void | rules(String $name, Array $config = [], String $viewName = NULL) |
1.0.0 | Mixed | error(String $name = 'array') |
1.0.0 | Mixed | postBack(String $name, String $met = 'post') |
5.4.2 | Bool | check(String $submit = 'all') |
# Validate (ZN >= 3.0.0)
Doğrulama yöntemidir.
String | ...$args | Filtreler. |
identity | Kimlik numarası kontrolü. | |
E-posta kontrolü. | ||
url | URL adres kontrolü. | |
specialChar | Özel karakter kontrolü. | |
numeric | Verilerin sayı kontrolü | |
alpha | Harflerin kontrolü. | |
alnum | Harf ve sayı kontrolü. | |
phone | Telefon kontrolü. | |
required | Boş geçilemez verilerin kontrolü. | |
trim | Boş karakter kontrolü. | |
captcha | Güvenlik kodu kontrolü. | |
Return | This |
Validation::validate('numeric', 'trim')->rules('phone');
# Secure (ZN >= 3.0.0)
Güvenlik yöntemidir.
String | ...$args | Filtreler. |
nc | Kötü verilerin kontrolü. | |
html | Html kodu içerikli verilerin kontrolü. | |
xss | Tırnak işaretlerinin ve script kontrolü. | |
injection | Veritabanı enjeksiyon kontrolü. | |
php | PHP taglarının kontrolü. | |
script | Script taglarının kontrolü | |
Return | This |
Validation::secure('xss', 'html', 'script')->rules('content');
# Compare (ZN >= 3.0.0)
Karşılaştırma yöntemidir.
Int | $min | Minimum karakter sayısı kontrolü. |
Int | $max | Maksimum karakter sayısı kontrolü. |
Return | This |
Validation::compare(4, 16)->rules('password');
# MatchPassword (ZN >= 3.0.0)
Kayıt veya güncelleme işlemlerinden şifre ve şifre tekrar verilerinin eşleşip eşleşmediğinin kontrolünü yapan yöntemdir.
String | $password | Şifre tekrar input nesnesinin name değeri. |
Return | This |
Validation::matchPassword('passagain')->rules('pass');
# Match (ZN >= 3.0.0)
Herhangi iki bilginin eşleşip eşleşmediğinin kontrolünü yapan yöntemdir.
String | $data | Kontrol edilecek input nesnesinin name değeri. |
Return | This |
Validation::match('oldpass')->rules('newpass');
# Phone (ZN >= 3.0.0)
Telefon bilgisi kontrolünü yapan yöntemdir.
String | $pattern | Desen. Her bir rakam * ile gösterilecek şekilde desen kullanılır. |
Return | This |
Validation::phone('(***)-(***)-(**)-(**)')->rules('example');
Yukarıdaki kurala uyan bir veri (090)-(534)-(00)-(00) gibi bir dizilimde olmalıdır.
# Pattern (ZN >= 3.0.0)
İstenilen türde değerin kontrolü için kullanılır. Bu yöntem içerisinde düzenli ifade içermelidir.
String | $pattern | Kontrol edilecek düzenli ifade. Başına ve sonuna kapsayıcı karakter koymanıza gerek yoktur. |
String | $extra | Düzenli ifadelerin sonuna eklenen i, s, x gibi extra karakterlerin kullanımı içindir. |
Return | This |
Validation::pattern('[a-zA-Z0-9]+', 'i')->rules('name');
# Between / BetweenBoth (ZN >= 5.3.5)
Verinin belirtilen 2 sayı arasında olup olup olmadığını kontrol eder.
Float | $min | Küçük sayı. |
Float | $max | Büyük sayı. |
Return | This |
Validation::between(100, 200)->rules('name');
Between kontrolünde sayılar arasında olmak zorundadır. BetweenBoth kontrolünde ise sayılara eşitte olabilir.
# Card (ZN >= 5.6.4)
Kredi kartı numarasının geçerliliğini kontrol eder. Çok sayıda kredi kartı sağlayıcısını destekler.
String | $type | Kredi kartı sağlayıcısı. |
Desteklenen Sağlayıcılar | visaelectron, visa, mastercard, maestro, dankort, jcb forbrugsforeningen, amex, dinersclub, discover, unionpay |
|
Return | This |
Post::cardNumber('5522334422334112');
Validation::card('mastercard')->rules('cardNumber')
# CVC (ZN >= 5.6.4)
Kredi kartı güvenlik numarasının geçerliliğini kontrol eder. Çok sayıda kredi kartı sağlayıcısını destekler.
String | $type | Kredi kartı sağlayıcısı. |
Desteklenen Sağlayıcılar | visaelectron, visa, mastercard, maestro, dankort, jcb forbrugsforeningen, amex, dinersclub, discover, unionpay |
|
Return | This |
Post::cardCVC('921');
Validation::cvc('mastercard')->rules('cardCVC');
# CardDate (ZN >= 5.6.4)
Kredi kartının son kullanım tarihinin geçerliliğini kontrol eder.
Void | ||
Return | This |
Gelen değer ay/yıl formatında bir bilgi içermelidir.
Post::cardDate('04/2023');
Validation::cardDate()->rules('cardDate');
# Messages (ZN >= 5.6.4)
Validasyon işlemlerinde oluşan hata çıktısı External/Languages/ViewObjects.php dosyasında yer alan tanımlamalara göre oluşturulur. Çıktıyı değiştirmek için bu dosyaları manipüle edebileceğiniz gibi bu işlemi bu yöntemle de gerçekleştirebilirsiniz.
Array | $messages | Kullanın tanımladığı mesajlar dizisi. | ||
anahtar | Anahtar olarak validasyon işleminin adı. Örnek: required, email | |||
değer | Değer olarak da bu işlemde hata oluşması sırasında oluşturulacak çıktının içeriği. Örnek: Geçersiz kullanım! | |||
Return | This |
Post::cvc(123123);
Validation::messages
([
'cvc' => 'Geçersiz kart güvenlik numarası.'
]);
Validation::cvc('mastercard')->rules('cardCVC');
echo Validation::error('string');
Oluşturulan hata mesajına veri yerleştirmek için bazı deyimler kullanılır.
:name | Hataya neden olan form nesnesinin adı veya takma adını temsil eder. |
:px | İsim dışında veri gönderimi için kullanılır. X kullanılan parametre başına sıralı sayıyı temsil eder. |
Post::name('Mi');
Post::point(150);
Validation::messages
([
'cvc' => ':name alanı geçersiz kart güvenlik numarasına sahiptir.',
'between' => ':name alanı [:p1 - :p2] sayı aralıklarında değildir.',
'minchar' => ':name alanı en az :p1 adet sayı içermelidir.'
]);
Validation::value('İsim')->rules('name', ['minchar' => 3]);
Validation::between(50, 100)->value('Puan')->rules('point');
echo Validation::error('string');
Puan alanı [50 - 100] sayı aralıklarında değildir.
# Value (ZN >= 3.0.0)
Validation::rules() yönteminin 3. parametresi yerine kullanılır. Input name değerinin üretilen hata çıktısında görünen adını ayarlamak için kullanılır.
String | $value | Input nesnesinin hangi isimle görüneceği. |
Return | This |
Validation::validate('required')->compare(5, 100)->value('Name')->rules('name');
# Method (ZN >= 3.0.0)
Validation::rules() yönteminin 4. parametresi yerine kullanılır. İstek türü varsayılan olarak post ayarlıdır. Bunu değiştirmek için bu yöntemden yararlanılır.
String | $method | İstek yöntem türü. |
Seçenekler | post, get, request, data | |
Return | This |
Validation::validate('required')->method('get')->rules('name');
Data Parametresi
Parametrenin 'data' ayarlanması durumunda doğrudan Validation::rules() yönteminin 1. parametresine gelen değerin kontrolünü yapar.
Validation::validate('email')->method('data')->rules('robot@znframwork.com');
# Rules (ZN >= 0.0.1)
Bu yöntemin temel amacı formlardan gelen verilerin hangi kontrol parametrelerinden geçeceğini belirlemektir. Veriler kontrolden başarılı bir şekilde geçerse error() yöntemi false döner.
String | $inputName | Nesne, post veya diğer yöntemlerle gönderilen verinin ismi. |
Array | $rules | Uygulanacak filtreler dizisi. |
String | $viewName | Input nesnesinin görünen değeri. |
Return | Void |
Post::username('ExampleUser');
Post::password('1234');
Validation::rules('username', ['required', 'email'], 'Username:');
Validation::rules('password', ['required', 'minchar' => 8, 'maxhar' => 32], 'Username:');
output( Validation::error() );
1 => string 'Username: area of at least 8 characters long!' ( length = 53 )
# Error (ZN >= 0.0.1)
Validasyon sonrası veri kontrolünün başarı ile sağlanıp sağlamadığı hakkın bilgi almak amaçlı kullanılır. Bu yöntem genellikle string parametresi ile bilgilendirme mesajı vermek için kullanılır.
String | $type = 'array' | Hata çıktısının veri türü. |
array | Hata çıktısı dizi türünde döner. | |
string | Hata çıktısı dizge türünde döner. | |
Return | Mixed |
echo Validation::error('string');
output( Validation::error() );
# Check (ZN >= 5.4.2)
Form kütüphanesine ait nesnelerin validate() yöntemi ile oluşturulan kuralların kontrolü için kullanılır.
5.4.2 | String |
$submitName = 'all' |
Parametre belirtilmezse submit edilen formanda gelen herhangi bir input nesnesine ait değerin gelip gelmediği kontrol edilir. |
Return | Bool |
<?php namespace Project\Controllers;
use Validation, Post;
class Home extends Controller
{
public function main(String $params = NULL)
{
if( ! Validation::check() )
{
View::error(Validation::error('string'));
}
}
}
# Standart Validasyon Kullanımı
Genellikle Validation kullanımı bir görünüm sayfasından post edilen forma ait değerleri kontrol etmek için kullanılır. Buna göre aşağıdaki gibi bir kontrolcü ve bir görünüm sayfamızın var olduğunu kabul ederek kodlarımızı düzenleyelim.
Veri göndereceğiniz formunuzu hazırlayın.
@Form::open('test')
@Form::placeholder('Name')->text('name'): <br>
@Form::placeholder('Subject')->textarea('subject'): <br>
@Form::submit('sendSubmit', 'Send')
@Form::close()
@if( ! empty($validationError) )
@$validationError
@endif
Gelen form verilerini işleme sokan kontrolcüyü hazırlayın.
<?php namespace Project\Controllers;
use Validation, DB, Post;
class Contact extends Controller
{
public function main(String $params = NULL)
{
if( Post::sendSubmit() )
{
Validation::validate('required')
->compare(2, 250)
->secure('xss', 'injection')
->value('Name : ')
->rules('name');
Validation::validate('required')
->compare(5, 250)
->secure('script', 'xss')
->value('Subject : ')
->rules('subject');
if( ! $validationError = Validation::error('string') )
{
DB::insert('post:contact');
}
}
View::validationError($validationError ?? NULL);
}
}
# Form Validasyon Kullanımı
Bu tip kullanımda form verilerinin kontrolü kontrolcü üzerinde Validation::rules() yerine görünüm üzerinde Form::validate() yöntemi ile yapılır.
Veri göndereceğiniz formunuzu hazırlayın.
@Form::open('test')
@Form::placeholder('Name')->validate('xss', 'injection', ['minchar' => 2])->text('name'): <br>
@Form::placeholder('Subject')->validate(['minchar' => 5, 'maxchar' => 250])->textarea('subject'): <br>
@Form::submit('sendSubmit', 'Send')
@Form::close()
@if( ! empty($validationError) )
@$validationError
@endif
Gelen form verilerini işleme sokan kontrolcüyü hazırlayın.
<?php namespace Project\Controllers;
use Validation;
class Home extends Controller
{
public function main(String $params = NULL)
{
if( ! Validation::check() )
{
# your codes...
View::validationError(Validation::error('string'));
}
}
}
# Validator (ZN >= 4.0.23)
Verilerin kontrolü maksadıyla oluşturulmuş kütüphanedir. Bu bölümde Validator:: kütüphanesinin normal veriler için kullanımı anlatılacaktır.
# Yöntemler
Bool | phone(String $data, String $pattern = NULL) |
Bool | numeric(String $data) |
Bool | alpha(String $data) |
Bool | alnum(String $data) |
Bool | identity(Int $no) |
Bool | email(String $data) |
Bool | url(String $data) |
Bool | specialChar(String $data) |
Bool | maxchar(String $data, Int $char) |
Bool | minchar(String $data, Int $char) |
# Phone (ZN >= 4.0.23)
Verinin telefon bilgisi içerip içermediği kontrol edilir.
String | $data | Kontrol edilecek veri. |
String | $pattern = NULL | Hangi desene göre kontrol yapılacağı. |
Return | Bool |
echo Validator::phone('1231');
echo Validator::phone('32343234234');
echo Validator::phone('123-234', '● *-● -● ');
echo Validator::phone('123-23-23', '● *-● -● ');
1
0
1
# Numeric (ZN >= 4.0.23)
Verinin sayısal veri olup olmadığı kontrol edilir.
String | $data | Kontrol edilecek veri. |
Return | Bool |
echo Validator::numeric('1231');
echo Validator::numeric('a234');
echo Validator::numeric('234');
0
0
# Alpha (ZN >= 4.0.23)
Verinin alfabetik veri olup olmadığı kontrol edilir.
String | $data | Kontrol edilecek veri. |
Return | Bool |
echo Validator::alpha('1231');
echo Validator::alpha('a234');
echo Validator::alpha('abcd');
0
1
# Alnum (ZN >= 4.0.23)
Verinin alfabetik veya sayısal veri olup olmadığı kontrol edilir.
String | $data | Kontrol edilecek veri. |
Return | Bool |
echo Validator::alnum('1231');
echo Validator::alnum('a234');
echo Validator::alnum('abcd');
echo Validator::alnum('?+y12');
1
1
0
# Identity (ZN >= 4.0.23)
Verinin kimlik numarası olup olmadığı kontrol edilir.
String | $data | Kontrol edilecek veri. |
Return | Bool |
echo Validator::identity(12312311231);
echo Validator::identity('12312312');
0
Gerçek bir kimlik numarası girdiğinizde sonucun 1 olduğunu görebilirsiniz.
# Email (ZN >= 4.0.23)
Verinin e-posta olup olmadığı kontrol edilir.
String | $data | Kontrol edilecek veri. |
Return | Bool |
echo Validator::email('robot@znframework');
echo Validator::email('robot@znframework.com');
1
# URL (ZN >= 4.0.23)
Verinin url olup olmadığı kontrol edilir.
String | $data | Kontrol edilecek veri. |
Return | Bool |
echo Validator::url('www.znframework.com');
echo Validator::url('https://www.znframework.com');
1
# SpecialChar (ZN >= 4.0.23)
Verinin içerisinde özel karakter olup olmadığı kontrol edilir.
String | $data | Kontrol edilecek veri. |
Return | Bool |
echo Validator::specialChar('abc+');
echo Validator::specialChar('abc');
0
# Minchar (ZN >= 4.0.23)
Verinin minumum uzunluk değeri kontrol edilir. Belirtilen değere eşit ve büyük olduğu sürece true döner.
String | $data | Kontrol edilecek veri. |
Int | $length | Karakter uzunluğu. |
Return | Bool |
echo Validator::minchar('abc', 5);
echo Validator::minchar('abc', 2);
1
# Maxchar (ZN >= 4.0.23)
Verinin maksimum uzunluk değeri kontrol edilir. Belirtilen değere eşit ve küçük olduğu sürece true döner.
String | $data | Kontrol edilecek veri. |
Int | $length | Karakter uzunluğu. |
Return | Bool |
echo Validator::maxchar('abc', 5);
echo Validator::maxchar('abc', 2);
0
# Validate (ZN >= 4.0.23)
Bu kütüphane Validator:: kütüphanesinin sıralı kullanımına yönelik oluşturulmuş kontrol kütüphanesidir. Validator:: kütüphanesinde yer alan bütün yöntemleri kullanabilir.
# Yöntemler
This | data(String $data) |
Bool | get(Void) |
Array | status(Void) |
# Data (ZN >= 4.0.23)
Kontrol edilecek verinin girileceği yöntemdir.
String | $data | Kontrol edilecek veri. |
Return | This |
$status = Validate::data('ExampleData')
->maxchar(20)
->minchar(5)
->email()
->get();
echo $status;
output( Validate::status() );
minchar => boolean true ( length = 4 ),
email => boolean false ( length = 5 )
# Get (ZN >= 4.0.23)
Validate kütüphanesine ait filtreleme
işlemlerini sonlandırmak için kullanılır.
Void | ||
Return | Bool |
Yukarıdaki örnekte kullanımı gösterilmiştir.
# Status (ZN >= 4.0.23)
Validate kütüphanesine ait filtreleme işlemleri sonucunda hangi filtrelerden başarı ile geçilip hangilerinden geçilmediği hakkıkında bilgi veren bir dizi döndürür.
Void | ||
Return | Bool |
Yukarıdaki örnekte kullanımı gösterilmiştir.