Kazım Ölmez

Web Tasarım Uzmanı

Ob_start ile öldürün Header ile Yaşatın

Selâmün Aleyküm. Arkadaşlar hala header fonksiyonunda hata alanlar ve bu header hatasını ob_start ile kapatmaya çalışanlar var. Sanki ob_start fonksiyonu header hatalarını kapatmak için üretilmiş gibi sadece header kullanılacağı zaman kullanılır olmuş. ob_start fonksiyonuyla header fonksiyonu hiç alakasız şeyler ama zâtın biri bulmuş bi şekilde dekgetirmiş ve ikisini birleştirip hatayı kapatmış. Tabi gelen geçen nesillerde araştırmak yerine hemen bu ikiliyi benimsemişler. Ob_start fonksiyonunu gereksiz kullanmak buna oranla sayfa yüklenme süresinin uzamasıdır. Bu yazıda kısaca örnekler vererek ob_start belâsından kurtarmaya çalışacam.

Bu kod hata verecek!

<?php echo "Merhabaa"; header("Location:index.php"); ?>

Neden hata verdi? Header fonksiyonundan önce ekranı karaladık da o yüzden.

Aynı şekilde bu kod da hata verecek!

<a href="#">Merhaba</a><?php header("Location:index.php"); ?>

Bu hatanında sebebi aynı. Ekranı karaladık

Bakın bu kod düzgün çalışıyor..

<?php header("Location:index.php"); echo "Merhaba"; ?><a href="#">salla</a>

Gördüğünüz gibi işte. Header fonksiyonundan önce ekrana çıktı verirseniz hatayı kesin alırsınız. Yani kesin yani.

Şunuda belirteyim madem. header hatalarını ob_start ile kapatmaya çalışmak standartlara uygun değildir.

İsterseniz şöyle bir fonksiyon ile yönlendirme işini kolay yoldan çözebilirsiniz

function redirect($exit=0,$path,$second=0){
  echo "<meta http-equiv='refresh' content='".$second.";URL=".$path."' />";
  if ($exit==1) { exit(); }
}

Php.net‘de şöyle bir ibare mevcut:

header() işlevinin normal HTML etiketleri ve dosya veya PHP’deki boş satırlar dahil herhangi bir çıktıdan önce çağrılması gerektiğini unutmayınız. header() çağrısından önce sıkça yapılan hatalar: kodu include, require veya başka bir dosya okuma işlevi ile okumak; betik HTML’ye gömülüyse betiğin veya dosyanın başındaki boşluklar veya boş satırlar.

Selâmetle.

Yorum Yap

alanya kanalizasyon açma alanya tıkanıklık açma alanya tuvalet açma