Kazım Ölmez – Web Tasarım Uzmanı

İnsanlara Faydası Olmayanı Ölülerden Say Gitsin..

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

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

%d blogcu bunu beğendi: