KodFeed İLMİN ZEKATI…

11Ara/094

PHP’de Cannot modify header information hatası

Selam arkadaşlar,

Warning: Cannot modify header information - headers already sent by (output started at ....) in ... on line xx
hatası tek hatadan dolayı çıkıyor oda headers fonksiyonunu kullanmadan önce bir çıktı almanızdan kaynaklanır. Bu çıktı sizin isteyerek almış olduğunuz veyahut istemeden almış olduğunuz bir çıktı olabilir.

Örneğin;

<div align="center">Deneme sayfa</div>
<?
header("Location: http://www.phpogreniyorum.info");
?>

şeklindeki bir kod hata verdirecektir. Bunun sebebi ise header fonksiyonundan önce bir çıktı alınmasıdır. Bu hatanın çıkmasını istemiyorsanız ob_start fonksiyonunu kullanabilirsiniz. ob_start fonksiyonu kullandığınız taktirde ob_end_flush fonksiyonunu kullanmayı unutmayınız.

<?
ob_start();
?>
<div align="center">Deneme sayfa</div>
<?
header("Location: http://www.google.com.tr");
ob_end_flush();
?>

Sonuç olarak şeklinde yapmanız gerekecektir.

Birde hiç bir şekilde çıktı almadığınız sayfalarda bu çıkıyor. Misal

<?
include "session.php";
if($_SESSION['yonetici'])
     header("Location: index.php?yonetici");
else
    header("Location: index.php?giris");
?>

şeklinde bir kodumuz var ve session.php içinde herhangi bir çıktı veren bir kod yok ise, ve bu sayfada bu hatayı alıyorsanız UTF8 Bom karakteri başınıza musallat olmuş demektir. UTF8 bom karakteri  gib karakterlerden oluşan ve sayfanın başında yer alan karakterlerdir. Bu karakter her editörde görünmüyor maalesef. Bunun için size önereceğim cuteHTML programı. cuteHTML programında bu karakterleri görebiliyorsunuz. CuteHTML programı ile include edilen dosyaları ve mevcut dosyayı açarak UTF8 Bom karakterini silmeniz sorununuzu düzeltecektir. CuteHtml programını buradan indirebilirsiniz.

Ama benim size önerim hiç program işine girmeden ve ob_start demek zorunda bırakmadan javascript ile sayfayı yönlendirmek olacaktır. Aşağıdaki kod işinize yarayacaktır.

<script type="text/javascript" language="JavaScript">window.location.href="index. php?sayfa=GirisYap;"</script>

Nice sorunsuz kodlamalar :)

VN:F [1.9.13_1145]
Rating: 9.0/10 (1 vote cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
PHP'de Cannot modify header information hatası, 9.0 out of 10 based on 1 rating
Etiketler: , Yorum gönder.
Yorumlar (4) Geri izlemeler (1)
  1. Ramazan atlamamak gerekir ki bu hatayı ayrıca, unix formatinda kaydetmeyi unuttuğunda da alırsın :) Eğer ob_start(); da yaptığınızda hata devam ediyorsa. dosyanız *nix formatinda kaydedin.

    VA:F [1.9.13_1145]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.13_1145]
    Rating: 0 (from 0 votes)
  2. Mehmet eklemen için teşekkürler. Bunu bilmiyordum :)

    VN:F [1.9.13_1145]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.13_1145]
    Rating: 0 (from 0 votes)
  3. Known problem with Byte Order Mark (BOM) and header() in pages of a site.

    For example at sending headings or to a dynamic conclusion in other coding distinct from UTF-8 by means of XSLT ().

    To clean all symbols BOM from the text of page:

    1. exclude BOM from the main file;
    2. write down function of a return call for the buffer

    it will exclude BOM from a code of the connected files;
    3. do not experience for BOM in connected files;
    4. be pleased.

    VA:F [1.9.13_1145]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.13_1145]
    Rating: 0 (from 0 votes)
  4. Cok tesekkurler

    VA:F [1.9.13_1145]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.13_1145]
    Rating: 0 (from 0 votes)

Leave a comment

(required)