Bu soru burada zaten bir cevabı var:
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:
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.
Sen var whitespace PHP açık etiketinden önce veya PHP yakın etiketinden sonra.
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.