İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Web Programlama (PHP, ASP, HTML, CSS, JavaScript)
Web Programlama (PHP, ASP, HTML, CSS, JavaScript)

Warning: Cannot modify header information hatası

atm1010.08.201215 cevap2.035 görüntüleme
2012'den beri51 mesaj
#1
merhaba
header kodu yazınca bu hatayı alıyorum çözüm nedir?
Teşekkürler
Cevaplar
atm10 Konuyu açan
2012'den beri51 mesaj
#2
Cevap ???
2011'den beri914 mesaj
#3
atm10 dedi: ↑
Cevap ???
zahmet olacak ama kodları burayada yazsan biraz daha açıklayıcı olsan.

Biliyorum gerçekten zahmet olacak ama kusura bakma.
2012'den beri250 mesaj
#4
ASP.NET'te header değiştirmeye çalışıyorsan, aşağıdakileri xRequest.Headers["Connection"] = ... şeklinde değiştiremezsin. Request için kullandığın araç ne ise xRequest.Connection = ... şeklinde değiştirebilirsin (Property ile). Aksi durumda yukarıdaki hatayı alırsın.

Accept
Connection
Content-Length
Content-Type
Expect
Date
Host
If-Modified-Since
Range
Referer
Transfer-Encoding
User-Agent

ASP.NET'ten başka bir platform kullanıyorsan, o platformda da buna benzer bir durum olabilir.
atm10 Konuyu açan
2012'den beri51 mesaj
#5
Arkadaşlar kodun tamamı burada.
<?php
ob_start();

include ("Aktarimlar/ayar.php");
include ("fonksiyonlar.php");
Function Anasayfa () {



echo" ÜYE HESABI Burası anasayfa";
}




Function Uye_Kayit (){
tablo_ac();
echo '

<form method="POST" action="index.php?Git=uyehesabi&sayfa=uye_kaydet">
    <div align="center">
    <table border="0" width="85%" cellspacing="0" cellpadding="0">
        <tr>
            <td width="100%" height="1" colspan="3">&nbsp;</td>
        </tr>
        <tr>
            <td width="22%">&nbsp;Kullanıcı Adı</td>
            <td width="9%" align="left">:</td>
            <td width="69%" align="left">
            <input type="text" name="kullanici" size="25"> <font color="#FF0000">
            (*)</font></td>
        </tr>
        <tr>
            <td width="22%">&nbsp;Şifre</td>
            <td width="9%" align="left">:</td>
            <td width="69%" align="left">
            <input type="password" name="sifre" size="25"><font color="#FF0000"> 
            (*)</font></td>
        </tr>
        <tr>
            <td width="22%">&nbsp;Email</td>
            <td width="9%" align="left">:</td>
            <td width="69%" align="left">
            <input type="text" name="email" size="25"> <font color="#FF0000">(*)</font></td>
        </tr>
        <tr>
            <td width="22%">&nbsp;Cinsiyet</td>
            <td width="9%" align="left">:</td>
            <td width="69%" align="left">
            <img border="0" src="Resimler/user-bay.gif" width="22"  height="22"><input type="radio" value="Bay" checked  name="cinsiyet">Bayan&nbsp;
            <img border="0" src="Resimler/user-bayan.gif" width="22"  height="22"><input type="radio" value="bayan" name="cinsiyet"> 
            Bayan</td>
        </tr>
        <tr>
            <td colspan="3">
            &nbsp;</td>
        </tr>
        <tr>
            <td colspan="3">
            <p align="center"><font  color="#800000"><b>Kullanıcı Özel  Bilgileri</b></font></td>
        </tr>
        <tr>
            <td width="22%">&nbsp;</td>
            <td width="9%" align="left">&nbsp;</td>
            <td width="69%" align="left">&nbsp;</td>
        </tr>
        <tr>
            <td width="22%">&nbsp;Adı Soyadı</td>
            <td width="9%" align="left">:</td>
            <td width="69%" align="left">
            <input type="text" name="adsoyad" size="43"></td>
        </tr>
        <tr>
            <td width="22%">&nbsp;Ülke / Şehir</td>
            <td width="9%" align="left">:</td>
            <td width="69%" align="left">
            <input type="text" name="ulke" size="18"> /
            <input type="text" name="sehir" size="19"></td>
        </tr>
        <tr>
            <td width="22%">&nbsp;İmza</td>
            <td width="9%" align="left">:</td>
            <td width="69%" align="left"><textarea rows="8" name="S1" cols="33"></textarea></td>
        </tr>
        <tr>
            <td width="22%">&nbsp;</td>
            <td width="9%">&nbsp;</td>
            <td width="69%"><input type="submit" value="Gönder" name="B1"></td>
        </tr>
        <tr>
            <td width="22%">&nbsp;</td>
            <td width="9%">&nbsp;</td>
            <td width="69%">&nbsp;</td>
        </tr>
        <tr>
            <td width="100%" colspan="3">
            <p align="center"><b>NOT: <font color="#FF0000">(*) </font>
            <font color="#808080">&nbsp;ile Bilirtilen alanlar doldurulmak 
            zorundadır.</font></b></td>
        </tr>
    </table>
    </div>
</form>


';


tablo_kapat ();
}





Function Uye_Kaydet(){

$kullanici         =Kod_Temizle($_POST["kullanici"])         ;
$sifre            =$_POST["sifre"]              ;
$adsoyad        =Kod_Temizle($_POST["adsoyad"])             ;
$ulke            =Kod_Temizle($_POST["ulke"])             ;
$sehir            =Kod_Temizle($_POST["sehir"])             ;
$email            =Kod_Temizle($_POST["email"])             ;
$cinsiyet        =$_POST["cinsiyet"]                        ;
$imza            =İcerik_Temizle($_POST["imza"])             ;


if(($kullanici=="") or ($sifre=="") or ($email=="")){    

    echo "<script>
    alert(\"Lütfen Boş Alan Bırakmayın\")
    </script>";

    echo "<br><center>Yönlendiriliyorsunuz <BR>Lütfen Bekleyin</center><br>";
    header("Refresh: 2; url=index.php");
    
    }else{
}
}
$sayfa = $_GET["sayfa"];

switch ($sayfa) {



        default                :                     Anasayfa ()            ;             Break     ;
        case ("uye_kaydi")    :                     Uye_Kayit ()        ;            Break    ;
        case ("uye_kaydet")    :                     Uye_Kaydet ()        ;            Break    ;
        
    
}



?>
2008'den beri6.394 mesaj
#6
dosya kodlamasını utf-8 with bom olarak seçmişseniz onda kaynaklanıyor olabilir. utf-8 without bom olarak kaydetmeniz gerekli
atm10 Konuyu açan
2012'den beri51 mesaj
#7
frontpage 2003 editorü kullanıyorum.Bunda dediğiniz ayarları nasıl yapabilirim.
2007'den beri6.903 mesaj
#8
Kodun "tamamı"na gerek yok. Bu hatayı, headerlar gönderildikten sonra bir header göndermeye veya değiştirmeye çalıştığınızda alırsınız. Bu ne demek?

Herhangi bir istemci (tarayıcı), sizin sayfanızı çağırdığında, sayfanız önce kod başlıklarını (header) gönderir. Bunlar, sayfanın adı, başlığı, kaç KB olduğu, en son ne zaman güncellendiği, önbelleğe alınıp alınamayacağı, sayfa taşındıysa yeni yerini, bulunamadıysa hata kodunu vb bilgilerdir. Sunucu bunları gönderdikten sonra, sayfanın içeriğini göndermeye başlar.

Fakat bunlar bir defa sunucu tarafından ziyaretçinin tarayıcısına gönderildikten sonra; sunucu bunlara müdahale edemez, çünkü kendisinden çıkışmış ve ziyaretçinin bilgisayarına girmiştir. O yüzden de bu işlemi yapmaya çalıştığınızda böyle bir hata verir.

Dediğim gibi, sunucu başka şekilde çalışmaya ayarlanmamışsa, ilk önce headerları, sonra da içeriği gönderir. Dolayısıyla script ilk çıktıyı gönderdiği andan itibaren headerler değiştirilemez. Öyleyse yapabileceğiniz iki şey var:

1- Tüm headerları doğru bir şekilde ayarlamadan çıktı göndermeyin. (echo)
2- Ya da çıktı gönderirken tarayıcıya gitmeden önce sunucu önbelleğinde beklemesini sağlayacaksınız. Bu da, scriptin başında ob_start() fonksiyonunu çağırmakla yapılabilir.
2010'den beri4.409 mesaj
#9
Türkekip çalışması bu sanırım değil mi ?

Şu şekilde bir denermisin ?Kodun sonuna eklemen gerekiyor

<?php  ob_flush(); ?>
2007'den beri6.903 mesaj
#10
Eğer sunucu ayarları bozulmamışsa, genellikle flush etmeye gerek kalmaz. Yani script durduğunda tüm çıktı toplamı tek seferde tarayıcıya gönderilir. Eğer sunucu, çıktıları otomatik göndermeye ayarlanmamışsa, yani ayarları değiştirilmişse ve özel bir uygulamaya ihtiyaç yoksa, scriptin sonunda ob_end_flush(); kullanmak daha doğru olacaktır.
2012'den beri250 mesaj
#11
atm10

Formuna baktım. Self submit yapıyor. Uye_Kaydet() fonksiyonu içerisinde header("Refresh: 2; url=index.php"); kullanmışsın.

Problem şundan kaynaklanıyor:

Form dolduruluyor.
Buton tıklanıyor.
Bilgi tekrar kendisine geliyor
Bilgi kontrol ediliyor.
Eksiklik varsa, tekrar kendisine yönlendirilmek isteniyor.
(Hata burada)

PHP programcısı değilim ama bu evrensel kuraldır. Render edilmiş sayfanın headerı değiştirilemez.

Sayfada mesaj verdirmek istiyorsan mesaj.php gibi bir sayfaya yönlendirmek ve o sayfada header("Refresh: 2; url=index.php"); kullanarak tekrar geri dönmesini sağlamak olabilir.

PHP programcıları daya iyi bilir. En üstte UYGUN bir yerde if(($kullanici=="") or ($sifre=="") or ($email=="")) ile kontrolü yaparak da header değişikliği yapabilirsin diye düşünüyorum. Burada önemli bir nokta var. Sayfa ilk yüklendiğinde de bu bilgiler boş olacağından (ASP.NET'te oldugu gibi IsPostBack var mı bilemiyorum) sayfanın post yapıp yapmadığının kontrol edilmesi gerekir.
2007'den beri6.903 mesaj
#12
Sayfayı header ile form kontrolü için o şekilde yönlendirmek çok yanlış olur; doğru sonuç da vermez.
atm10 Konuyu açan
2012'den beri51 mesaj
#13
header("Refresh:2; url=index.php?Git=uyehesabi&sayfa=uye_kaydi");
Yaptığımda da olmuyır.

Şimdi ben bu işte biraz yeniyim diyebilirim.
Ben şimdi ne yapmam lazım
2010'den beri893 mesaj
#14
Html yönlendirme yap istersen
2007'den beri6.903 mesaj
#15
Tam olarak ne yapmak istiyorsun?
2011'den beri7 mesaj
#16
Arkadaşım scripti başka bir hosta taşı problem hostunun php versiyonundan ya da global registery ayarlarından kaynaklanıyor.

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.