PHP Dilinde “cannot send session cache limiter – headers already sent” Hatası ve UTF-8 BOM

PHP Dilinde “cannot send session cache limiter – headers already sent” Hatası ve UTF-8 BOM
Nisan 29 12:08 2014 Bu yazıyı yazdır

Bu yazıda, oturum açma işlemi sonrası senaryolar için geçerli sayfalarda karşınıza çıkabilecek çözümü basit ama oldukça kafa karıştırıcı bir problemi kısaca işleyeceğiz. Yazı genel olarak session_start(); satırının kod içerisindeki konumu ve UTF-8 BOM (Byte Order Mark) ile ilgili sancılı problemi izzah etmek suretiyle devam edecek. UTF-8 BOM problemini başka bir yazıda daha detaylı olarak işleyeceğimize de eklemek istiyorum.

Aşağıdaki gibi bir PHP scripti yazdığımızı düşünelim. Kullanıcı, şifre bilgisini girerek erişim sağlıyor. Sonrasında bir veriyi silmek istiyor ve aşağıdaki sayfaya geliyor. Tabi en başta bir session_start(); gerekli, çünkü yetkisi olmayanların giremesini engellemeliyiz.

Bu sayfaya geldiğimiz zaman hata loglarında şöyle bir satır görebilirsiniz:

Burada şu iki durumu kesinlikle incelememiz ve düzeltmemiz gerekecek:

  • session_start(); konumunu php etiketinden hemen sonra olarak ayarlamak,
  • Sayfa özelliğinin karakter kodlamasında UTF-8 BOM işaretini kaldırmak

Yazının başında söylediğimiz gibi, UTF-8 BOM durumunu başka bir yazıda daha detaylı anlatacağız, ancak kısaca bahsetmek gerekirse BOM hepinizin görünce anlayacağı sancılı karakter bütünü olan,  bu işarettir. Web sitesinin karakter yapısını bozmasından dolayı erişim sorunu yaratabilir. Sayfanın en üst tarafında konumlandığı için session_start(); üstünde yer alabilir. Bu sebeple de oturumların sağlıklı taşınmasını engeller.

Eğer web projeleri geliştiriyorsanız, bir IDE kullanmanız kuvvetle muhtemel. Örnek olarak Dreamweaver kullandığınızı düşünelim. İlgili sayfa seçili iken üst menüde “Değiştir/Sayfa Özellikleri -> Başlık/Dil Kodlaması” yönergesini seçerek, BOM check-box’undaki seçimi kaldıracağız.

bom1

Adobe DreamWeaver Karakter Kodlama Düzenleme

Adobe DreamWeaver Karakter Kodlama Düzenleme

İlgili ayarlama işlemleri yapıldığında sayfa tekrar çalıştırıldığında hatasız bir çalışma göreceksiniz.

Sonraki yazılarda görüşmek üzere!

  Yazı şöyle etiketlendi:
  Kategoriler:
A.Gökhan, M.Sc.
A.Gökhan, M.Sc.

My Name is A. Gokhan SATMAN, and I am a software engineer, Author and game developer. gokhansatman.com

Daha fazla yazı görüntüle
Yorum yaz

0 Yorum

Henüz yorum yok

Tartışma başlatabilirsin.

Yorum ekle

*