PHP hatası: â € "zaten [yinelenen] gönderdi başlıklarını başlık bilgileri değiştirilemiyor

5 Cevap php

Possible Duplicate:
Headers already sent by PHP

Yani ben o kadar haşhaş neden sayfamda bu çıktı .. anlayış yok. Ama php yeniyim, belki bunu düzeltmek için kolay bir şey

-Ben tüm önemli bilgi, hem de sahip sayfanın bayrağını içeren bir header.php dosyası var. Bu header.php her sayfada yer almaktadır.

-Ben emin kullanıcı belirli bir sayfada olmak için izin yapmak için oturum değeri kontrol var. Kullanıcı izin değilse, ben giriş sayfasını onları geri tepmek

Hata olsa yukarı giriyor. Bu benim ne var:

include_once ("header.php");

if ($_SESSION['uid']!='programmer')
{                        
header('Location: index.php');
echo 'you cannot be here';
exit;
}   

Bu yeniden yönlendiriliyor endeksi de başlık vardır. Yani bana bu hatayı veriyor bu çoklu başlık başvuruları yaşıyor? Bunu yapmak için başka bir yol göremiyorum ve bu beni deli ediyor!

5 Cevap

Metin tarayıcı çıkış olmuştur kez header() kullanamazsınız. Için header.php muhtemelen çıkışları HTML dahil olarak, header() kullanılamaz.

Eğer bir çift yollarla bu çözebilir:

  • Taşı başlığının Yukarıdaki açıklamalarımızın (Eğer header.php uid oturum ve diğer hayati şeyler ayarlar açıklamalarda belirtildiği ettik, bu, işe yaramaz) eklerseniz.
  • Çıktı tampon yazısının üstündeki ob_start() diyoruz.

Header.php "pankartı vardır" varsa, o zaman muhtemelen sayfasına bazı HTML içeriği çıktısı.

Eğer içerik outputted sonra HTTP başlıklarını veremiyor.

Siz başka bir içerik gönderdikten sonra herhangi bir başlık gönderemezsiniz. Bir çok büyük olasılıkla suçlu kapanış sizin header.php ?> etiketi sonra fazladan boşluk olduğunu. Herhangi bir komut sadece php dosyaları tamamen kapanış etiketi ihmal genellikle iyi bir uygulamadır.

Sizin hata çıktı gönderiyor tam olarak ne hattı (ve ne dosyası) söylemeliyim.

Ben aşağıdaki gibi olmak için kullanılan bir Yönlendirme fonksiyonu açısından benzer bir hata (aynı zamanda görünüşte yoktan) koştu:

function Redirect($url) {
        flush(); // Flush the buffer
        header("Location: $url"); // Rewrite the header
        die;
    }

Görünüşe göre, aynı zamanda ob_flush(); tamamen eski başlığını temizlemek için eklemeniz gerekir. Yeni fonksiyon:

function Redirect($url) {
        flush(); // Flush the buffer
        ob_flush();
        header("Location: $url"); // Rewrite the header
        die;
    }

Bu başkası bu sorunu yaşıyorsanız yardımcı olur umarım!

Tamam, bu yüzden bu aniden çalışır neden nasıl olsa, belki birileri açıklayabilir emin değil ...... sabit bulunuyor.

Bu benim kodudur:

include_once ("header.php");

if ($_SESSION['uid']!='programmer') {  
    if(isset($_SESSION['uid'])) {
        echo $_SESSION['uid'];
    }                           

    header('Location: index.php');
    exit;
}

Tekrar edeyim, şimdi her şey çalışıyor! PHP ... şimdi neden çalışır?