Ben bir php uyarı alıyorum: (! Ama benim html kodu önce dosya dahil) genel başlık bilgileri değiştirilemiyor [yinelenen]

4 Cevap php

Bu soru burada zaten bir cevabı var:

4 Cevap

Sizin l() function bir çerez ki, set_lang() ilk kez kullanıldığı çağırıyor - ve kurabiye HTTP başlıkları olarak gönderilir.

O l() bir dize çevrilmiş sürümünü almak için kullanılır, bunun bakıştan, tahmin ediyorum - bu muhtemelen HTML / PHP her yerde kullanılır anlamına gelir; çıkış gönderilirken başlamıştır sonra, yani.

Çerez herhangi bir HTML içeriği önce gönderildiğinden emin olmak için - Sen common.php dosyasının üstündeki set_lang() aramalısınız.


In fact, in your case, I would modify the l() function so it only does one thing : return a translated string.

, Evet, senin senaryonun başında "elle" başlatılıyor demektir - I l() dışarı Tercüme sisteminin başlatılması vereceğini ama aynı zamanda yapmak için daha az iş olacak basit bir l() işlevi anlamına gelir.

Bu çeşitli nedenlerden dolayı olabilir:

  1. Sen setcookie () veya session_start () üzerinden, indirecly HTTP başlıklarını gönderiyor.

    Lütfen set_lang () işlevi bir göz. Sen önce çıkış l () arayarak çözebilirsiniz.

  2. Sen var whitespace PHP açık etiketinden önce veya PHP yakın etiketinden sonra.

  3. Sen UTF-8 dosya kaydederse, fakat BOM. BOM olmadan kaydedin.

Her zaman ob_start () ekleyebilirsiniz, ancak bu sadece sorunu bypass edecek.

Bir çerez ayarlama bir başlık gönderirken gerektirir, böylece output buffering işlevleri kullanmak sürece çıktı sayfanın herhangi birine bir kez set_lang() arayamazsın.

Eğer bu hatayı alıyorsanız dosyanın üstündeki ob_start() fonksiyonunu koyarak deneyin.