Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!
PHP - Sessions
PHP dilinde Session , bir kullanıcı için ayar değişiklikleri ve hakkındaki bilgileri , almak ve özelleştirmek için kullanılır.Session değişkenleri ,sadece tek kullanıcı hakkında veri tutar ve işlem yapabilir ayrıca bütün sayfalar dahilinde tek kullanıcı hakkında uygulama yapar.
PHP Session Değişkenleri
Bir proje üzerinde çalışırken , proje açarsınız, bazı gerekli değişiklikleri yaparsınız ve sonrasında uygulamayı kapatırsınız.PHP de Session da aynı bu şekildedir.Bilgisayar sizin kim oldugunuzu bilir,ve uygulamalarınıza ne zaman başladığınızı ve sona erdirdiğinizi takip eder.Ama internet üzerinde bu konuda bir sorun meydana gelir; Web sunucusu sizi ve neler yaptığınızı tanıyamaz, çünkü HTTP adresi bu durumu sağlayamaz.
PHP Session , server üzerinde yapılan son uygulamayı,bilgileri(Örn; kullancı adi, alışveriş bilgileri ) yerleştirerek bu sorunu ortadan kaldırır.
Session bilgileri kullanıcı siteden ayrıldıktan sonra silinir.Eğer sürekli bir takip isterseniz veritabanına verileri kaydetmeniz mümkündür.
Session her ziyaretçi için bir id(UID) numarası atar ve bütün bilgileri bu id e göre yerleştirir.UID numarası aynı zamanda çerezlere de kaydedilir veya URL e yerleştirilir.
Session Başlatmak
Session bilgilerini kaydetmeden önce, Session başlatmak gerekir.Not: session_start() fonksiyonu <html> tagından önce yazılmalıdır:
Yukarda yazılan kod kullanıcıya ait bir Session açar ve kullanıcı hakkındaki bilgileri önceki konumuzda anlattığımız gibi UID numaralarına göre kaydetmeye başlar.
Session Değişkenini Yerleştirmek
$_SESSION değişkenini yerleştirmenin ve düzenleme yapmanın yolu örneğimizdedir, buyrun bakalım hemen;
Sayfa gösterimi=1
Yukardaki örnekte , basit bir sayfa gösterim sayacı tasarladık. isset() fonksiyonu ile views değişkeninin kaydedildiğini kontrol edelim. views değişkeni yapılandırıldıysa ,sayacımızı arttırabiliriz. Eğer değişkenimiz yoksa,views adıyla yeniden yapılandırıyoruz ve değerini 1 olarak atıyoruz:
Session Yoketmek
Sessionımızı yoketmek veya sona erdirmek için unset() yada session_destroy() fonksiyonlarını kullanacağız.Session dahilinde oluşan belirli bir değişkeni silmek için unset() fonksiyonunu kullanıyoruz;
Sessiona ait tüm verileri yoketmek için session_destroy() fonksiyonunu kullanıyoruz:
Not: session_destroy() tüm session u sıfırlar ,böylece kaydedilen tüm veriler yokolur.
PHP dilinde Session , bir kullanıcı için ayar değişiklikleri ve hakkındaki bilgileri , almak ve özelleştirmek için kullanılır.Session değişkenleri ,sadece tek kullanıcı hakkında veri tutar ve işlem yapabilir ayrıca bütün sayfalar dahilinde tek kullanıcı hakkında uygulama yapar.
PHP Session Değişkenleri
Bir proje üzerinde çalışırken , proje açarsınız, bazı gerekli değişiklikleri yaparsınız ve sonrasında uygulamayı kapatırsınız.PHP de Session da aynı bu şekildedir.Bilgisayar sizin kim oldugunuzu bilir,ve uygulamalarınıza ne zaman başladığınızı ve sona erdirdiğinizi takip eder.Ama internet üzerinde bu konuda bir sorun meydana gelir; Web sunucusu sizi ve neler yaptığınızı tanıyamaz, çünkü HTTP adresi bu durumu sağlayamaz.
PHP Session , server üzerinde yapılan son uygulamayı,bilgileri(Örn; kullancı adi, alışveriş bilgileri ) yerleştirerek bu sorunu ortadan kaldırır.
Session bilgileri kullanıcı siteden ayrıldıktan sonra silinir.Eğer sürekli bir takip isterseniz veritabanına verileri kaydetmeniz mümkündür.
Session her ziyaretçi için bir id(UID) numarası atar ve bütün bilgileri bu id e göre yerleştirir.UID numarası aynı zamanda çerezlere de kaydedilir veya URL e yerleştirilir.
Session Başlatmak
Session bilgilerini kaydetmeden önce, Session başlatmak gerekir.Not: session_start() fonksiyonu <html> tagından önce yazılmalıdır:
PHP:
<?php session_start(); ?>
<html>
<body>
</body>
</html>
Yukarda yazılan kod kullanıcıya ait bir Session açar ve kullanıcı hakkındaki bilgileri önceki konumuzda anlattığımız gibi UID numaralarına göre kaydetmeye başlar.
Session Değişkenini Yerleştirmek
$_SESSION değişkenini yerleştirmenin ve düzenleme yapmanın yolu örneğimizdedir, buyrun bakalım hemen;
PHP:
<?php session_start();
//session verilerini yerlestir
$_SESSION[views]=1;
?>
<html>
<body>
<?php
// session verilerini duzenle
echo Sayfa gösterimi=. $_SESSION[views];
?>
</body>
</html>
Sayfa gösterimi=1
Yukardaki örnekte , basit bir sayfa gösterim sayacı tasarladık. isset() fonksiyonu ile views değişkeninin kaydedildiğini kontrol edelim. views değişkeni yapılandırıldıysa ,sayacımızı arttırabiliriz. Eğer değişkenimiz yoksa,views adıyla yeniden yapılandırıyoruz ve değerini 1 olarak atıyoruz:
PHP:
<?php
session_start();
if(isset($_SESSION[views]))
$_SESSION[views]=$_SESSION[views]+1;
else
$_SESSION[views]=1;
echo Gösterim=. $_SESSION[views];
?>
Session Yoketmek
Sessionımızı yoketmek veya sona erdirmek için unset() yada session_destroy() fonksiyonlarını kullanacağız.Session dahilinde oluşan belirli bir değişkeni silmek için unset() fonksiyonunu kullanıyoruz;
PHP:
<?phpunset($_SESSION[views]);?>
Sessiona ait tüm verileri yoketmek için session_destroy() fonksiyonunu kullanıyoruz:
PHP:
<?phpsession_destroy();?>
Not: session_destroy() tüm session u sıfırlar ,böylece kaydedilen tüm veriler yokolur.
PHP- Email
PHP yazacağımız yardımıyla direct olarak e-mail gönderebilir
mail() Fonksiyonu
mail() fonksiyonu yazılan kod içinde e-mail gonderen bir fonksiyondur.
Basit Bir E-Mail İşlemi
E-mail göndermenin en basit yolu text mail yollamaktır.Aşağıdaki örnekte; öncelikle değişkenleri($to, $subject, $message, $from, $headers ) tanımlıyoruz, ardından mail göndermek için tanımlanan değişkenleri kullanıyoruz;
Mail Form
PHP kullanarak, web sitenize bir iletişim formu oluşturabilirsiniz. Aşağıdaki örnekten formda yazılan mail ,belirli bir e-mail adresine gönderiliyor:
Örneğimizi aşama aşama inceleyelim;
PHP yazacağımız yardımıyla direct olarak e-mail gönderebilir
mail() Fonksiyonu
mail() fonksiyonu yazılan kod içinde e-mail gonderen bir fonksiyondur.
Basit Bir E-Mail İşlemi
E-mail göndermenin en basit yolu text mail yollamaktır.Aşağıdaki örnekte; öncelikle değişkenleri($to, $subject, $message, $from, $headers ) tanımlıyoruz, ardından mail göndermek için tanımlanan değişkenleri kullanıyoruz;
PHP:
<?php$to = birisi@example.com;$subject = Test mail;$message = Merhaba! Bu basit bir deneme mailidir.;$from = atilla@serpito.com;$headers = Kimden: $from;mail($to,$subject,$message,$headers);echo Mail Gönderildi.;?>
Mail Form
PHP kullanarak, web sitenize bir iletişim formu oluşturabilirsiniz. Aşağıdaki örnekten formda yazılan mail ,belirli bir e-mail adresine gönderiliyor:
PHP:
<html><body><?phpif (isset($_REQUEST[email])){//email gönder$email = $_REQUEST[email] ;$subject = $_REQUEST[subject] ;$message = $_REQUEST[message] ;mail( herhangibiri@example.com, Subject: $subject,$message, From: $email );echo Mail formumuzu kullandığınız için teşekkür ederiz;}else{echo <form method=post action=mailform.php>Email: <input name=email ******text /><br />Subject: <input name=subject ******text /><br />Message:<br /><textarea name=message rows=15′ cols=40′></textarea><br /><input ******submit /></form>;}?></body></html>
Örneğimizi aşama aşama inceleyelim;
- İlk olarak, email girdi bölümünün dolu olduğunu kontrol et
- Doldurulmamış ise ( sayfa ilk defa açılıyor gibi sıfırdan formu göster)
- Mesaj girdileri doldurulduktan sonra;formdan e-maili gönder
- Girdiler dolu ise ,sayfa yeniden yüklenir,e-mail formu yeniden sıfırlanır,ve maili gönderir
PHP - İstisna Yönetimi
İstisna yönetimi , özel bir hata oluştuğu zaman kodun akışını değiştirebilir.
Exception(İstisna) Nedir?
PHP 5 ile birlikte hataları kontrol etmek için nesneye yönelik bir yaklaşım ortaya çıktı.
Hata ayıklama durumları hata oluştuğu anda işletilecek kodun normal akışını değiştirerek yönetilmesini sağlamaktadır.Buna ististan yönetimi adı verilir.
İstisna tetiklendiği anda şu aşamalar gerçekleşir;
Şimdi farklı hata ayıklama yöntemlerini inceleyelim:
Not: İstisnalar yanlızca hatalı oluşması durumunda kullanılmalıdır.Ayrıca kodun herhangi bir noktasına atlaması için kullanılmamalıdır.
Basit Exception(İstisna)
Bir istisna fırlatıldığında , devamındaki kod çalışmaya devam etmez, PHP gönderilen parçada catch ifadesi arar. catch ifadesi throw edilen istisnayı yakalar..
Eğer istisna hedefte yakalanamazsa , fatal error(ölümcül hata) oluşur.Hata notu Uncaught Exception - Yakalanamayan istisna olarak görülür.
Şimdi yakalanmayan bir istisna tasarlayalım;
Yukarıdaki kodu çalıştırırsak , aşağıdaki gibi bir hata ile karşılaşırız:
Throw ve catch İfadeleri
Yukarıdaki gibi hatalarla uğraşmamak için ,uygun bir istisna yönetimi tasarlamamız gerekir.
Uygun bir istisna aşağıdaki ifadeleri içerir:
Kod aşağıdaki gibi bir hata mesajı yayınlayacaktır:
Message: Değer 1 veya daha az olmalıdır
Örnek Açıklaması:
Yukardaki kod, istisya fırlatır ve yakalar;
Custom Exception(İstisna) Sınıfları Oluşturmak
Özel istisna sınıfları oluşturmak son derece basittir. PHP de oluşacak hataları yönetmek için fonksiyonlar içeren sınıf oluşturuyoruz.
Özel istista sınıfımız PHP istisna yönetim sınıfından kalıtılır,ve tüm özelliklerini kullanabilir.Ayrıca kendimize göre de fonksiyon ekleyebiliriz.
İstisna sınıfı oluşturalım:
Örneğimizi Açıklayalım;
Yukardaki kod örneğimiz özel bir istisna sınıfı ile , istista fırlatır ve yakalar.
Çoklu İstisnalar
Birden fazla istisnaları yönetmek ve uygulamak PHP script I için mümkündür.
Birkaç if..else bloğu ve switch kullanarak çoklu istisnaları uygulayabiliriz.Bu istisnalar, farklı istisna sınıflarını kullanabilir ve farklı hata mesajları yayınlayabilirler:
Örneği Açıklayalım:
Yukardaki kod iki durumda ve iki istisna fırlatma işlemini yorumlar ve denetler;customException() sınıfı PHP Exception sınıfndan kalıtılır.Kalıtılan Exception sınıfın bütün methodlarını ve özelliklerini kullanabilir.(Class Konusunda daha detaylı işleyeceğiz)errorMessage() oluşturuldu .Verilen email adresinin yanlış olması durumunda bu fonksiyon hata mesaını yayınlar.$email değişkeni String tabanlıdır ve birisi stringini tutar.try bloğu çalıştırılır ve ilk durumda istisna fırlatılmaz.İkinci koşulda birisi Stringini gördüğü anda istisnayı tetikler.catch bloğu istisnayı yakalar ve hata mesajını doğrular.customException yakalanmaz ise , sadece basit istisna yakalanır ve catch bloğunda tutulur.
Exceptions(İstisna) nın Tekrar Fırlatılması
Bazı durumlarda , bir istisna fırlatıldığında ,normal olan yoldan farklı bir şekilde istisnayı tutmanı gerekebilir. Böyle durumlarda bir catch bloğuyla ikinci tekrarda istisna fırlatabilirsiniz .
Script sistem hatalarını kullanıcıdan saklayabilir.Bu hatalar kullanıcıyı ilgilendirmez ama programcı için çok önemlidir.Bu durumu kolaylaştırmak için bir kullanıcıya tekrar istisna fırlatarak samimi bir mesajla kullanıcıya gösterebilirsiniz:
Örneği Açıklayalım:
Yukardaki kod email adresinin birisi stringini içerip içermediğini denetler ,içeriyor ise istisna tekrar gönderilir:
İstisna yakalanamazsa , try bloğunun dışına çıkar ve üst blokta aramaya başlar.
Üst Seviye İstisna Yakalayıcı Tasarlamak
set_error_handler() fonksiyonu ile kullanıcı tanımlı fonksiyonları kullanarak yakalanamayan istisnaları yakalar.
Yukarıdaki kodun çıktısı şu şekilde görülür:
İstisna Kuralları
İstisna yönetimi , özel bir hata oluştuğu zaman kodun akışını değiştirebilir.
Exception(İstisna) Nedir?
PHP 5 ile birlikte hataları kontrol etmek için nesneye yönelik bir yaklaşım ortaya çıktı.
Hata ayıklama durumları hata oluştuğu anda işletilecek kodun normal akışını değiştirerek yönetilmesini sağlamaktadır.Buna ististan yönetimi adı verilir.
İstisna tetiklendiği anda şu aşamalar gerçekleşir;
- Varolan kod durumu kaydedilir.
- Kod işletimi önceden tanımladan hata ayıklama bloğuna atlayacaktır.
- Duruma göre , hata ayıklama sonunda , ya en son işletilen kod bloğuna yeniden dönerek devam edecek, yada hata ayıklama bloğunda belirtilen aşamadan devam edecektir.
Şimdi farklı hata ayıklama yöntemlerini inceleyelim:
- Basit istisna kullanımı
- Özel istisna ayıklayıcı tasarlamak
- Çoklu istisnalar
- Tekrarlı istisna göndermek
- Yüksek seviye istisna ayıklayıcı ayarlamak
Not: İstisnalar yanlızca hatalı oluşması durumunda kullanılmalıdır.Ayrıca kodun herhangi bir noktasına atlaması için kullanılmamalıdır.
Basit Exception(İstisna)
Bir istisna fırlatıldığında , devamındaki kod çalışmaya devam etmez, PHP gönderilen parçada catch ifadesi arar. catch ifadesi throw edilen istisnayı yakalar..
Eğer istisna hedefte yakalanamazsa , fatal error(ölümcül hata) oluşur.Hata notu Uncaught Exception - Yakalanamayan istisna olarak görülür.
Şimdi yakalanmayan bir istisna tasarlayalım;
PHP:
<?php//istisna fonksiyonu tanımlayalımfunction checkNum($number){if($number>1){throw new Exception(Değer 1 veya birden az olmalı);}return true;}//istisnayı tetiklecheckNum(2);?>
Yukarıdaki kodu çalıştırırsak , aşağıdaki gibi bir hata ile karşılaşırız:
PHP:
Fatal error: Uncaught exception Exceptionwith message Değer 1 veya birden az olmalı in C:\webfolder\test.php:6Stack trace: #0 C:\webfolder\test.php(12):checkNum(28) #1 {main} thrown in C:\webfolder\test.php on line 6
Throw ve catch İfadeleri
Yukarıdaki gibi hatalarla uğraşmamak için ,uygun bir istisna yönetimi tasarlamamız gerekir.
Uygun bir istisna aşağıdaki ifadeleri içerir:
- Try - istisna tanımlanan fonksiyon try bloğunda bulunur.İstisna gönderilmezse,kod çalışmaya devam etmez.İstisna tetiklenirse , try bloğundan fırlatılır ve adrese yönelir.
- Throw -İstisnanın tetiklediği bloktur.Her throw ifadesi en az bir catch ifadesine sahip olmalıdır.
- Catch - catch bloğu istisnanın yakalandığı ve tetiklendiği şekilde çalıştırıldığı bloktur.
PHP:
<?php//istisna fonksiyonu oluşturalımfunction checkNum($number){if($number>1){throw new Exception(Değer 1 veya daha az olmalıdır.);}return true;}// try bloğunda istisnayı tetikleyelimtry{checkNum(2);//istisna fırlatıldığında,bu kod çalışmayacaktır.echo Bunu görüyorsanız,değer 1 den kucuk demektir;}//İstisna yakalacatch(Exception $e){echo Message: .$e->getMessage();}?>
Kod aşağıdaki gibi bir hata mesajı yayınlayacaktır:
Message: Değer 1 veya daha az olmalıdır
Örnek Açıklaması:
Yukardaki kod, istisya fırlatır ve yakalar;
- checkNum() fonksiyonu yaratıldı. Fonksiyon değerin 1 den büyük yada küçük olduğunu denetler.Ve istisna fırlatılır.
- checkNum() fonksiyonu try bloğunda çağırıldı.
- checkNum() daki istisna fırlatıldı
- catch bloğu istisnayı ele alır ve istisna bilgilerini içeren $e nesnesini yaratır.
- İstisna nesnesi tarafından getMessage() fonksiyonu ile hata mesajı yayınlanır.
Custom Exception(İstisna) Sınıfları Oluşturmak
Özel istisna sınıfları oluşturmak son derece basittir. PHP de oluşacak hataları yönetmek için fonksiyonlar içeren sınıf oluşturuyoruz.
Özel istista sınıfımız PHP istisna yönetim sınıfından kalıtılır,ve tüm özelliklerini kullanabilir.Ayrıca kendimize göre de fonksiyon ekleyebiliriz.
İstisna sınıfı oluşturalım:
PHP:
<?phpclass customException extends Exception{public function errorMessage(){//Hata mesajı$errorMsg = Error on line .$this->getLine(). in .$this->getFile().: <b>.$this->getMessage().</b>geçersiz e-mail adresi;return $errorMsg;}}$email = birisi@kodadiweb.com;try{//denetleif(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE){//email adresi geçersiz ise istisna fırlatthrow new customException($email);}}catch (customException $e){//özel mesajı yayınlaecho $e->errorMessage();}?>
Örneğimizi Açıklayalım;
Yukardaki kod örneğimiz özel bir istisna sınıfı ile , istista fırlatır ve yakalar.
- customException() sınıfı PHP öntanımlı Exception sınıfından kalıtılmış bir istisna sınıfıdır.
- errorMessage() function oluşturulur.e-mail adresi yanlış ise bir hata mesajı döndürür.
- $email string yapısında tanımlanan geçerli bir email adresini tutar.
- try blogu çalıştırılı ve e-mail adresi geçersiz ise istisna gönderilir.
- catch bloğu istista yöntemini yakalar ve hata mesajını yayınlar.
Çoklu İstisnalar
Birden fazla istisnaları yönetmek ve uygulamak PHP script I için mümkündür.
Birkaç if..else bloğu ve switch kullanarak çoklu istisnaları uygulayabiliriz.Bu istisnalar, farklı istisna sınıflarını kullanabilir ve farklı hata mesajları yayınlayabilirler:
PHP:
<?phpclass customException extends Exception{public function errorMessage(){//hata mesajı$errorMsg = Error on line .$this->getLine(). in .$this->getFile().: <b>.$this->getMessage().</b> geçersiz e-mail adresi;return $errorMsg;}}$email = birisi@kodadiweb.com;try{//denetleif(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE){// email adresi yanlış ise istisna gönderthrow new customException($email);}// birisi ni mail adresinde ararif(strpos($email, örnek) !== FALSE){throw new Exception($email örnek bir mail adresidir);}}catch (customException $e){echo $e->errorMessage();}catch(Exception $e){echo $e->getMessage();}?>
Örneği Açıklayalım:
Yukardaki kod iki durumda ve iki istisna fırlatma işlemini yorumlar ve denetler;customException() sınıfı PHP Exception sınıfndan kalıtılır.Kalıtılan Exception sınıfın bütün methodlarını ve özelliklerini kullanabilir.(Class Konusunda daha detaylı işleyeceğiz)errorMessage() oluşturuldu .Verilen email adresinin yanlış olması durumunda bu fonksiyon hata mesaını yayınlar.$email değişkeni String tabanlıdır ve birisi stringini tutar.try bloğu çalıştırılır ve ilk durumda istisna fırlatılmaz.İkinci koşulda birisi Stringini gördüğü anda istisnayı tetikler.catch bloğu istisnayı yakalar ve hata mesajını doğrular.customException yakalanmaz ise , sadece basit istisna yakalanır ve catch bloğunda tutulur.
Exceptions(İstisna) nın Tekrar Fırlatılması
Bazı durumlarda , bir istisna fırlatıldığında ,normal olan yoldan farklı bir şekilde istisnayı tutmanı gerekebilir. Böyle durumlarda bir catch bloğuyla ikinci tekrarda istisna fırlatabilirsiniz .
Script sistem hatalarını kullanıcıdan saklayabilir.Bu hatalar kullanıcıyı ilgilendirmez ama programcı için çok önemlidir.Bu durumu kolaylaştırmak için bir kullanıcıya tekrar istisna fırlatarak samimi bir mesajla kullanıcıya gösterebilirsiniz:
PHP:
<?phpclass customException extends Exception{public function errorMessage(){//hata mesajı$errorMsg = $this->getMessage(). is not a valid E-Mail address.;return $errorMsg;}}$email = birisi@kodadiweb.com;try{try{// birisi ni mail adresinde denetleif(strpos($email, example) !== FALSE){//mail geçersiz ise istisna fırlatthrow new Exception($email);}}catch(Exception $e){//tekrar fırlatthrow new customException($email);}}catch (customException $e){//özel mesajı yayınlaecho $e->errorMessage();}?>
Örneği Açıklayalım:
Yukardaki kod email adresinin birisi stringini içerip içermediğini denetler ,içeriyor ise istisna tekrar gönderilir:
- customException() sınıfı PHP Exception sınıfndan kalıtılır.Kalıtılan Exception sınıfın bütün methodlarını ve özelliklerini kullanabilir
- errorMessage() oluşturuldu .Verilen email adresinin yanlış olması durumunda bu fonksiyon hata mesaını yayınlar.
- $email değişkeni String tabanlıdır ve birisi stringini tutar.
- try bloğu içindeki birbaşka try bloğu koşulu denetler ve tekrar istisna gönderir
- E-mail içeriğinde birisi stringi bulunduğunda istisna tetiklenir
- catch bloğuistisnayı yakalar ve tekrar bir customException gönderir
- customException yakalanır ve hata mesajı yayınlar
İstisna yakalanamazsa , try bloğunun dışına çıkar ve üst blokta aramaya başlar.
Üst Seviye İstisna Yakalayıcı Tasarlamak
set_error_handler() fonksiyonu ile kullanıcı tanımlı fonksiyonları kullanarak yakalanamayan istisnaları yakalar.
PHP:
<?phpfunction myException($exception){echo <b>Exception:</b> , $exception->getMessage();}set_exception_handler(myExceptio n );throw new Exception(Yakalanamayan İstisna oluştu);?>
Yukarıdaki kodun çıktısı şu şekilde görülür:
PHP:
Exception: Yakalanamayan İstisna oluştu
İstisna Kuralları
- İstisnalar açısından yakalanabilirliği kolaylaştırmak için try bloğunun içinde olabilir.
- Her try yada throw bloğu en az bir adet catch bloğuyla ilişkilendirilmeli
- Birden fazla catch bloğu farklı istisna sınıflarını yakalamak için kullanılabilir.
- İstisnalar try bloğunun içinde bulunan catch bloğuna fırlatılabilir.
PHP - Filtreler
PHP filtresi , kullanıcı girdileri gibi güvensiz kaynaklardan alınan verileri filtreleme işlemini gerçekleştirir.
PHP Filtre Nedir?
Güven vermeyen kaynaklardan alınan verileri filtreleme yapmamız gerekir.Verileri doğrulama, test etme ve filtreleme tüm web uygulamalar için önemli bir aşamadır.Php filter özelliği , kolay kullanıma sahip bir şekilde diyazn edilmiştir.
Neden Filtre Yapmalıyız?
Çoğunlukla tüm web uygulamaları harici veri girişleri üzerine işlem yapmaktadır.Genellikle kullanıcıdan yada başka bir uygulamadan alınan veriler kullanılır. Filtreleme yaparak projelerimize güvenilir ve doğru bir veri giriği sağlarız.
Dışardan alınan tüm verileri filtreleme yapmanız tavsiyemdir!! İnput filtreleme web uygulamaları için en önemli güvenlik aşamasıdır.
Harici Veri Ne Demektir?
Fonksiyon ve Filtreler
Bir değişkeni filtrelemek için aşağıdaki filter fonksiyonlar kullanılır:
Aşağıdaki örnekte, integer sayıyı filter_var() fonksiyonu ile filtreliyoruz,bakalım;
Yukardaki kod, FILTER_VALIDATE_INT özelliğini kullanarak değişkeni filtreler.İnteger sayının geçerli olduğunu belirttikten sonra , ekrana integer geçerli yazdırır.
Eğer integer değişkenimiz yerine 123abn gibi bir değer deneseydik, ekran çıktımız, integer geçersiz yazılacaktı.
Doğrulama ve Sterilize Etme
İki filter türü vardır;
Filtre Doğrulama:
Filtreleri Siterilize Etme
Seçenekler ve Flag
Aşağıdaki örneğimizde , bir integer(tamsayı) değerini fiter_var() fonksiyonu min_range ve max_range secenekleri ile doğrulayalım:
Yukarda tasarladığımız kod örneğinde options dizisi ile ilişkili seçenekleri kullandık.Seçenek değil de sadece bir flag kullanıyor ise dizi kullanmamıza gerek yoktur.
integer değeri 300″ , bu değer verilen özelliklere(min_range , max_range) uymadığı için integer geçersiz çıktısını göreceğiz.
Input(girdi) Doğrulama
Tasarladığımız formdan alına verileri doğrulayalım.Öncelikle girilen verilerde aradığımız veri özelliklerini arayıp ve onaylamamız gerekir.
Daha sonra , verileri filter_input() fonksiyonu ile filtreleyim.
Aşağıdaki örnekte, input verisi olan mail stringi PHP dosyasına gönderiliyor; şöyleki:
Örneği Açıklayalım;
Örneğimizde bir email değişkenini GET metodu kullanarak gönderiyor.
email girdi verisi GET metoduyla tanımlanan verü türüne uyuyor mu kontrol ediyor.
İnput değişkeni uyuyorsa, email adresinin doğruluğunu kontrol ediyor.
Input Sterilize
Formdan gelen URL adresini sadeleştirelim.
Önce aranılan verinin bulunduğunu kontrol ediyoruz;
Girilen veriyi filter_input() fonksiyonu ile sterilize ediyoruz.
Örneğimizde , url verisi PHP sayfasına gönderiliyor:
Örneği Açıklayalım;
POST metoduyla , alınan verimizi sayfaya gönderiyoruz.:
girdi verisinin varlığını kontrol ediyoruz.
veri bulundu ise,URL değerinin siterilize ediyoruz, URL standartlarına uymayan karakterleri temizleyerek URL değerini gönderiyoruz.
Çok Girdileri Filtreleme
Formlar çoğunlukla birden fazla veri alan input alanları kullanılır. filter_var() veya filter_input() fonksiyonlarını her input alanında tekrar tekrar kullanmanın anlamı yoktur.
Bu örneğimizde filter_input_array() fonksiyonu ile çok input değerlerinini filtreleyelim:
Örneği Açıklayalım;
Yukarıdaki örneğimizde 3 input bölümü(name , age, email) buluyor ve bu girdiler GET metoduyla gönderiliyor;
filter_input_array() fonksiyonun ikinci parametresi bir dizi veya tekil bir filter IDe sahip olabilir.
Filtre Geri Çağırma
Programcı tarafından tanımlanan bir fonksiyonu FILTER_CALLBACK filtresi ile yeniden filtreleme yapabiliriz.
Şimdi kendi fonksiyonumuzu tanımlayalım ve varolan PHP fonksiyonu içinde kullanalım.
Aşağıdaki örneğimizde , tanımlanan fonksiyonu yeniden filtreleyerek _ karakteri ile isimlendiriyoruz:
Kodumuzun ekran çıktısı şu şekilde olur:
****** çok yakışıklı biri!
Örneğimizi Açıklayalım:
Örneğmiz tüm _ karakterlerini spacee (yani boşluk) dönüştürüyor .
Dönüşüm için bir fonksiyon tasarla
filter_var() fonksiyonunu FILTER_CALLBACK filtresi ile birlikte dizi işleminde kullanılıyor.
PHP filtresi , kullanıcı girdileri gibi güvensiz kaynaklardan alınan verileri filtreleme işlemini gerçekleştirir.
PHP Filtre Nedir?
Güven vermeyen kaynaklardan alınan verileri filtreleme yapmamız gerekir.Verileri doğrulama, test etme ve filtreleme tüm web uygulamalar için önemli bir aşamadır.Php filter özelliği , kolay kullanıma sahip bir şekilde diyazn edilmiştir.
Neden Filtre Yapmalıyız?
Çoğunlukla tüm web uygulamaları harici veri girişleri üzerine işlem yapmaktadır.Genellikle kullanıcıdan yada başka bir uygulamadan alınan veriler kullanılır. Filtreleme yaparak projelerimize güvenilir ve doğru bir veri giriği sağlarız.
Dışardan alınan tüm verileri filtreleme yapmanız tavsiyemdir!! İnput filtreleme web uygulamaları için en önemli güvenlik aşamasıdır.
Harici Veri Ne Demektir?
- Formdan alınan veriler
- Çerezler(Cookies)
- Web Servis Verileri
- Sunucu Değişkenleri
- Veritabanı sorgu sonuçları
Fonksiyon ve Filtreler
Bir değişkeni filtrelemek için aşağıdaki filter fonksiyonlar kullanılır:
- filter_var() - özel bir filter ile bir değişkeni filtreler
- filter_var_array() - Birden fazla veriyi , aynı veya farklı filtreler ile filtreler
- filter_input - Bir girilen veriyi alır ve filtreler
- filter_input_array - Birden fazla girdileri alır , aynı veya farklı filtreler ile filtreler
Aşağıdaki örnekte, integer sayıyı filter_var() fonksiyonu ile filtreliyoruz,bakalım;
PHP:
<?php$int = 123;if(!filter_var($int, FILTER_VALIDATE_INT)){echo(integer geçersiz);}else{echo(integer geçerli);}?>
Yukardaki kod, FILTER_VALIDATE_INT özelliğini kullanarak değişkeni filtreler.İnteger sayının geçerli olduğunu belirttikten sonra , ekrana integer geçerli yazdırır.
Eğer integer değişkenimiz yerine 123abn gibi bir değer deneseydik, ekran çıktımız, integer geçersiz yazılacaktı.
Doğrulama ve Sterilize Etme
İki filter türü vardır;
Filtre Doğrulama:
- Kullanıcı girdilerini doğrulamak için kullanılır
- Katı format format kuralları (URL yada E-Mail değerleri gibi)
- Başarı halinda beklenen durum döner, aksi takdirde FALSE değeri döndürür.
Filtreleri Siterilize Etme
- string içinde izin verilen veya izinsiz karakterleri ayırır
- Veri format kuralı yok
- Herzaman string döndürür
Seçenekler ve Flag
- Seçenekler ve Flaglar filtrelere eklenerek özelleştirir.
- Farkli filtreler farklı seçeneklere ve flaglara sahiptir.
Aşağıdaki örneğimizde , bir integer(tamsayı) değerini fiter_var() fonksiyonu min_range ve max_range secenekleri ile doğrulayalım:
PHP:
<?php$var=300;$int_options = array(options=>array(min_range=>0,m ax_range= >256));if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)){echo(Integer geçersiz);}else{echo(Integer geçerli);}?>
Yukarda tasarladığımız kod örneğinde options dizisi ile ilişkili seçenekleri kullandık.Seçenek değil de sadece bir flag kullanıyor ise dizi kullanmamıza gerek yoktur.
integer değeri 300″ , bu değer verilen özelliklere(min_range , max_range) uymadığı için integer geçersiz çıktısını göreceğiz.
Input(girdi) Doğrulama
Tasarladığımız formdan alına verileri doğrulayalım.Öncelikle girilen verilerde aradığımız veri özelliklerini arayıp ve onaylamamız gerekir.
Daha sonra , verileri filter_input() fonksiyonu ile filtreleyim.
Aşağıdaki örnekte, input verisi olan mail stringi PHP dosyasına gönderiliyor; şöyleki:
PHP:
<?phpif(!filter_has_var(INPUT_GET, email)){echo(Girilen veri türü yanlış);}else{if (!filter_input(INPUT_GET, email, FILTER_VALIDATE_EMAIL)){echo E-Mail geçersiz;}else{echo E-Mail geçerli;}}?>
Örneği Açıklayalım;
Örneğimizde bir email değişkenini GET metodu kullanarak gönderiyor.
email girdi verisi GET metoduyla tanımlanan verü türüne uyuyor mu kontrol ediyor.
İnput değişkeni uyuyorsa, email adresinin doğruluğunu kontrol ediyor.
Input Sterilize
Formdan gelen URL adresini sadeleştirelim.
Önce aranılan verinin bulunduğunu kontrol ediyoruz;
Girilen veriyi filter_input() fonksiyonu ile sterilize ediyoruz.
Örneğimizde , url verisi PHP sayfasına gönderiliyor:
PHP:
<?phpif(!filter_has_var(INPUT_POST, url)){echo(Girilen veri türü yanlış);}else{$url = filter_input(INPUT_POST,url, FILTER_SANITIZE_URL);}?>
Örneği Açıklayalım;
POST metoduyla , alınan verimizi sayfaya gönderiyoruz.:
girdi verisinin varlığını kontrol ediyoruz.
veri bulundu ise,URL değerinin siterilize ediyoruz, URL standartlarına uymayan karakterleri temizleyerek URL değerini gönderiyoruz.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
şeklinde bir url değeri sterilize edildikten sonra, kayıt edilirÇok Girdileri Filtreleme
Formlar çoğunlukla birden fazla veri alan input alanları kullanılır. filter_var() veya filter_input() fonksiyonlarını her input alanında tekrar tekrar kullanmanın anlamı yoktur.
Bu örneğimizde filter_input_array() fonksiyonu ile çok input değerlerinini filtreleyelim:
PHP:
<?php$filters = array(name => array(filter=>FILTER_SANITIZE_STRING),age => array(filter=>FILTER_VALIDATE_INT,options =>arr ay(min_range=>1,max_range=>120)),em ail=> FILTER_VALIDATE_EMAIL,);$result = filter_input_array(INPUT_GET, $filters);if (!$result[age]){echo(Yaş değeri 1 ve 120 arasında olmalı.<br />);}elseif(!$result[email]){echo(E-Mail geçersiz.<br />);}else{echo(Kullanıcı girdisi geçerli);}?>
Örneği Açıklayalım;
Yukarıdaki örneğimizde 3 input bölümü(name , age, email) buluyor ve bu girdiler GET metoduyla gönderiliyor;
- özelleştirilecek olan input değişkenleri içeren bir dizi oluşturuyoruz.
- filter_input_array() fonksiyonu çağrılıyor,
- age ve email değişkenleri $result kümesinde içerikleri kontrol edilir. filter_input_array() fonksiyonu çağrılır ve filtreleme gerçekleşir.
filter_input_array() fonksiyonun ikinci parametresi bir dizi veya tekil bir filter IDe sahip olabilir.
Filtre Geri Çağırma
Programcı tarafından tanımlanan bir fonksiyonu FILTER_CALLBACK filtresi ile yeniden filtreleme yapabiliriz.
Şimdi kendi fonksiyonumuzu tanımlayalım ve varolan PHP fonksiyonu içinde kullanalım.
Aşağıdaki örneğimizde , tanımlanan fonksiyonu yeniden filtreleyerek _ karakteri ile isimlendiriyoruz:
PHP:
<?phpfunction convertSpace($string){return str_replace(_, , $string);}$string = ******_çok_yakışıklı_biri!;echo filter_var($string, FILTER_CALLBACK,array(options=>convertSpa ce)); ?>
Kodumuzun ekran çıktısı şu şekilde olur:
****** çok yakışıklı biri!
Örneğimizi Açıklayalım:
Örneğmiz tüm _ karakterlerini spacee (yani boşluk) dönüştürüyor .
Dönüşüm için bir fonksiyon tasarla
filter_var() fonksiyonunu FILTER_CALLBACK filtresi ile birlikte dizi işleminde kullanılıyor.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 2
- Görüntüleme
- 175
- Cevaplar
- 0
- Görüntüleme
- 173
