Table Of Contents

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:

<!--?php

ob_start();
session_start();
// kodlarınız
echo 'buraya kodlar';
// kodlarınız bitis
ob_end_flush();
?-->

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:

<!--?php

print 'hataya neden oldum galiba :(';

@session_start();
?-->
  • php