"Zaten gönderildi başlığı" Nasıl devre dışı bırakmak için

3 Cevap linux

I building my sites on the localhost (runs wamp on windows), and when I upload it to my server, I always get "Cannot modify header information - headers already sent"

Orada herhangi bir boş satır ve her şeyimsin olabilir ve genellikle bu dışarı çalışır gerektiğini anlıyorum. ama şimdi başlık gönderildikten sonra nasıl benim localhost gibi benim sunucu hareket yapabilir, birine yönlendirmek gerekir?

Ben cPanel ve WHM kullanıyorum:

cPanel 11.25.0-R42399 - WHM 11.25.0 - X 3.9 CENTOS 5.4 x86_64 virtuozzo on vps

Ben herhangi bir yardım takdir edecek

3 Cevap

Kısacası, size header () işlevi kullanmak istediğiniz noktaya gelmeden önce tarayıcıya şey çıktılanmasının PHP önlemek gerekir.

Bu sizin 'hayır boş satırlar' bir, ya da bir çıkış tampon PHP'nin çıktı saklayarak olduğu, dikkatli programlama uygulamaları ile yapılır, ve bunun için hazır olduğunuzda, sadece çıktısı olmalıdır.

ob_start() ve ob_flush() yöntemleri. Bu uygulama başında () ob_start kullanın. Bu çıkışı devre dışı bırakır ve bir tampon içine saklar. Eğer çıkış başlatmak için hazır olduğunuzda, ob_flush () kullanın ve PHP bu noktaya kadar ayarlanır başlıklar dahil, tarayıcıya tamponunun içeriğini göndereceğiz. Eğer ob_flush aramazsan () sonra tampon yazısının sonunda çıkış (boşaltılan) olduğunu.

Sizin WAMP geliştirme ortamında çalışır nedeni çıktı tamponlama zaten php.ini varsayılan olarak etkinleştirmek olması muhtemeldir. Oldukça sık bu all-in-one paketler ilk 4k bayt ya da öylesine için varsayılan bir tampon etkinleştirin. Daha iyi kodlama uygulamaları zorlar beri Ancak, açıkça başlatmak ve kodunuzda tampon temizlemek için genellikle daha iyidir.

Well, I guess by more thinking and better programing you can manage to keep all redirects before any HTML is written.

Eski kurallara göre çözüldü Bu sorun ...

@ User31279: biliyorum, hızlı ve kirli yolu, @ uyarıyı bastırmak için kullanmak böylece örneğin

@header('Location: some-other-page.php');