- enterId:146622 Hata sayfaları yönetimi « KOODLA | BLOG

Hata sayfaları yönetimi

Date25 / Nisan / 2008 Author İsa Engiz    Category php     Tags , , , Yorumlar8 Yorum Yapilmis.

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-resmi

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!

- Bu blogda yer alan yazıları RSS ile takip edebilirsiniz. RSS aboneliği için tıklayın.

- 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ış.

  • yunus 26 Nisan 2008, 14:12

    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

  • İsa 27 Nisan 2008, 10:57

    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.

  • KOODLA | BLOG » genel » .htaccess konuları [Hataları yönlendirme] 14 Aralık 2008, 11:08

    [...] önce, “php ile hata sayfaları yönetimi” yazısında da bu konuya [...]

  • Emre 17 Aralık 2008, 20:16

    dediklerinizi yaptım çalıştı ama durum çubuğunda sayfada hata yazıyor.söz dizimi hatası diye birşey çıktı nasıl çözebilirim

  • İsa Engiz 17 Aralık 2008, 22:35

    PHP kod yazımında hata olabilir belki, kodlarınızı tam olarak gönderirseniz daha çok yardımcı olabilirim belki…

  • mirc 09 Ocak 2009, 11:00

    tskler site admin..

  • Erdem Karagöz 17 Haziran 2009, 17:47

    merhaba ben denedim firefoxda calısıyor. iexplorerde calısmıyor yardımcı olurmusunuz…….

  • safak saracoglu 28 Temmuz 2010, 23:03

    TEŞEKKÜRLER GÜZEL MAKALE

Arama


E-Posta Aboneliği


RSS Aboneliği

En Çok Yorumlanan Yazılar

Etiketler

404 ajax apache arama butonu as astrofizik açık kaynak banner blogger blogger/blogspot Blogger / Blogspot blogspot case chmod css date dosya yükleme editör etiket etkinlik favicon featured form ftp galeri Genel gimp hata sayfası header htaccess htpasswd ilişkisel veritabanı index innodb javascript join JQuery kategori koodla linux mysql opacity php resim url

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...

Sayfalar


Faydalı Bağlantılar