Hata sayfaları yönetimi
Web programlama dillerinin (ör: PHP) getirdiğini en büyük avantaj kuşkusuz içeriğin dinamik olarak oluşturulabilmesi. Bu şekilde içeriği düzenlediğimizde statik html sayfalarının aksine, çok fazla sayıda sayfa oluşturabiliyoruz. Bu kadar çok sayfanın getirdiği bazı sorunlar da oluyor tabi ki. Bunların en meşhuru, “sayfa bulunamadı” anlamına gelen “404 hatası”.

404 hatasıyla beraber, sık karşılaşılan başka sunucu hataları da var tabiki, kullanıcı, bu tür hatalardan birine yol açacak bir istek yaptığında apache sunucusu varsayılan hata sayfasını kullanıcıya gösterir. Bu hata sayfalarının pek sevimli olmadığı itiraf etmemiz gerekir, genelde kullanıcı kaybına yol açarlar. Bunun önüne geçmek için kendi hata sayfalarımızın olması gerekmekte.
Hatalar
Apache’nin pek çok hata kodu bulunmakta, biz burada 4 tanesi için sayfa oluşturacağız. (Tüm liste için bu adrese bakılabilir.)
- 401: Sayfa görüntüleme izni hatasıdır. Eğer bir dizini ya da bir sayfayı parola ile koruyorsanız, kullanıcı parolayı yanlış girdiğinde karşılaşacağı sayfadır.
- 403: Erişim engelleme hatasıdır. Kullanıcı’nın belirtilen dosyayı görüntülemeye hakkı yoktur.
- 404: Sayfa bulunamadı hatasıdır.
- 500: Sunucu işlemi gerçekleştirirken bir hatayla karşılaştı anlamına gelir.
Hata sayfalarına yönlendirmek
Yukarıda verilen bağlantıda listelenen tüm hatalar için ayrı bir sayfa oluşturabiliriz, ancak biz burada sadece yukarıda belirttiğimiz 4 hata için hazırlanacağız.
Yapmamız gereken ilk iş çok basit, sunucumuza bir .htaccess dosyası yerleştireceğiz. içeriği ise şu şekilde olacak:
ErrorDocument 404 http://site.com/hatalar/?hata=404 ErrorDocument 403 http://site.com/hatalar/?hata=403 ErrorDocument 401 http://site.com/hatalar/?hata=401 ErrorDocument 500 http://site.com/hatalar/?hata=500
Şu şekilde bir mantık yürüttük, sistemde çıkacak tüm hataları “hatalar” dizinindeki index.php sayfasına yönlendirdik ve sayfaya “GET” metoduyla bir de değişken değeri yolladık. Bu şekilde yapmamızın sebebi, bütün hatalrı tek bir sayfadan yönetmenin daha kullanışlı olacağıdır.
Bu .htaccess dosyasını sunucumuza yerleştirdiğimizde, artık kullanıcı sitede olmayan bir dosyayı istediği zaman apache onu hatalar/index.php?hata=404 sayfasına yönlendirecek. (tabi biz şu anda hatalar dizinini ve bu dizindeki index.php dosyasını oluşturmalıyız, yoksa onun için de bir 404 hatası oluşur!)
hatalar/index.php
Bu sayfanın içeriği aşağıdaki gibi olabilir:
<?php $hata = $_GET["hata"]; if ($hata == 401) { include("401.html"); } elseif ($hata == 403) { include("403.html"); } elseif($hata == 404) { include("404.html"); } elseif ($hata == 500) { include("500.html"); } else { include("404.html"); } ?>
Bu index.php dosyası hata türüne göre ilgili html sayfasını yüklüyor ve kullanıcıya gösteriyor. Bu sayfalara neler yazabileceğinizi siz kendiniz belirlemelisiniz, yaratıcılık konusunda sıkıntı çekiyorsanız, smashing magazine’nin bu yazısına bakabilirsiniz. Biz olayın teknik kısmına odaklanacağız!
Bütün hataları index.php sayfasına yönlendirmemizin sebebi aslında bir kaç tane.
1- Öncelikle bütün hata sayfalarını tek elden kontrol edebiliyoruz.
2- Bir hata oluştuğunda, kullanıcıya bir hata oluştu diye mesaj vermekten daha fazlasını .php dosyası sayesinde yapabiliriz, örneğin 403 hatası oluştuğunda, if-else deyiminin ilgili bölümü çalıştığında, bir kayıt dosyasına veri girişi yapabiliriz, hatta veritabanını bile log dosyası olarak kullanabiliriz, ya da sistem yöneticisine (kendinize!) e-posta atabiliriz.
Bu şekilde apache sunucusunun verebileceği tüm hataları yönetebiliriz ve hatanın oluşması durumunda gerekli önlemleri kayıtları alabiliriz. Bir sonraki yazımızda PHP’nin vereceği hataları nasıl yöneteceğimizi irdeleyeceğiz.
Bir sonraki yazıda görüşmek üzere!
- Ya da bu blogda yer alan bütün yazıları içindekiler sayfasında görüntüleyebilirsiniz. Tıklayın!
Hata sayfaları yönetimi yazısına 8 Yorum yapılmış.
Arama
E-Posta Aboneliği
RSS Aboneliği
En Çok Yorumlanan Yazılar
- Ajax ile dinamik listeleme (23)
- PHP ile sınırsız alt kategori mantığı (23)
- Blogger’da “devamını oku” bağlantısı (21)
- MySQL’de “join” kullanımı (17)
- MySQL’de Transaction ve PHP ile kullanımı (16)
- Kullanıcı dostu url hazırlamak (14)
- PHP’nin (muhtemelen) az bilinen 10 özelliği (12)
- Kullandığınız programlama dili ne kadar popüler? (12)
- Kullanıcı dostu URL oluşturma (2. teknik) (11)
- .htaccess konuları [Giriş] (11)
Etiketler
Son Yorumlar
- Murat: Güzel bir teknik, şu ana kadar sınırsız alt kategori lazım olmadı ama olmayacağı anlamına gelmiyor
- iilyas: Bu kodlar çalışmıyor arkadaşım. Localde olduğu içinmi acaba ?
- iilyas: Arkadaşım çok teşekkür ediyorum. Harika anlatmışsın ajaxla çalışmalara başlamak lazım estetik açısından.....
- Nuri: bende bu şekilde bir çalışma yaptım ancak bir sorunum var ne yaptıysam url den index.php bölümünü kaldıramadım....
- Kemal: Makale için çok teşekkürler, resimleri div tagları ile yapabilirmiyiz. Bu arada imagelara link verirsek daha...
25 / Nisan / 2008
Guzel olmus eger sunucu kendimize aitse apache nin ayarlarından 404 sayfalarını tek bir sayfaya yonlendirebilmekteyiz
ErrorDocument 500 /Anadizin/404.php
ErrorDocument 404 /Anadizin/404.php
ErrorDocument 404 /Anadizin/404.php
ErrorDocument 402 /Anadizin/404.php
Bunları apachede degistirdigimiz zaman 404.php ye direkt yonlendirme yapabiliyoruz eger url istenen sekilde degilse 404.php den farklı hata sayfamızı include ediyoruz…. Yazılarınızın devamı dilegiyle
Evet, dediğiniz gibi eğer sunucu kendimize aitse, Apache’nin ayar dosyası olan httpd.conf içerisinde ilgili satırları düzenleyerek de bu gerçekleştirilebilir, o zaman fazladan bir .htaccess dosyasına da gerek kalmaz.
İlginiz için teşekkürler.
[...] önce, “php ile hata sayfaları yönetimi” yazısında da bu konuya [...]
dediklerinizi yaptım çalıştı ama durum çubuğunda sayfada hata yazıyor.söz dizimi hatası diye birşey çıktı nasıl çözebilirim
PHP kod yazımında hata olabilir belki, kodlarınızı tam olarak gönderirseniz daha çok yardımcı olabilirim belki…
tskler site admin..
merhaba ben denedim firefoxda calısıyor. iexplorerde calısmıyor yardımcı olurmusunuz…….
TEŞEKKÜRLER GÜZEL MAKALE