Php Session Hatasının Çözümleri

Posted by admin on February 4, 2012

Php’de güvenlik ve ya üyelik sistemi için uğraşıyorsak sessionlar vazgeçilmezimiz. Bunu ilk defa kullananlar eminim ki "header already sent" diye bir hata almışlardır. Session kullanılırken yapılan belli başlı hatalardan bulduklarımı çözümleriyle birlikte sizinle paylaşıyorum:

1.Session start’dan önce print ile bişeyler basmak.

İnternette gördüğüm kadarıyla en çok yapılan hata. session_start() fonksiyonunu  çağırmadan önce ekrana hiçbir çıktı basılmaması gerekir. include edilen dosyalar da dahil.

2.Safe mod’un açık durumda olması.

Bu her zaman hataya neden olmuyor ama bazı sunucularda hataya neden oluyor (neden bende bilmiyorum server bilgim yok). Safe modu kapatmak için, -hostunuz için veriyorsa tabi- php.ini dosyası oluşturup ‘safemod = off’ yazmanız yeterli olacaktır.

3.Dosya kayıt kodlaması

Windows tabanlı çalışanların karşılaştıkları hata. Bu yazılı yazma nedenim aslında bu. Dosya kodlaması çıktıya etki ediyor. BOM içeren kodlamalarda sizin yazdıklarınız dışında görmediğiniz tanımlarda oluyor. Bu nedenle o hatayı alabiliyoruz. Eğer hatanın bu nedenle oluşuyorsa Nodpad++ ile php dosyanızı açın ve Encoding sekmesinden kayıt Formatını ‘Convert to UTF-8 Without BOM’ u seçin (Eğer Notpad++’ı Türkçe olarak kullanıyorsanız Kodlama -> UTF-8 (BOM’suz) olarak dönüştürü seçmeniz yeterli olacaktır).

 

Bu önerilerim kanımca yeterli olacaktır ama hala hata alıyorum diyorsanız hataları engellemek için 2 önerim var:

1.ob start ve ob end flush kulanmayı deneyiniz. Bunu kullanırken ob startı sessionunda üstüne alıyoruz. Örnek kod:

2.Hatayı gizlemek. Session start’ın başına “@” koyarak hatanın görünmesini engelleyebilirsiniz ama kod çalışmaz. Önemli değil kod benim işimi görür scriptteki diyorsanız kullanabilirsiniz. Örnek kullanım: