PHP Session Kimliği sayfaları arasında değişir

4 Cevap php

Ben 2 sayfaları arasında PHP oturum kaybediyorum bir sorun var.

Session_start () ayarlamak için bir oturum gerektiren her sayfanın içine oturum inc.php adlı bir dosyaya dahil edilir. Bu belirli bir sayfada, üye profile.php dışında sitedeki tüm sayfalar için çalışır. Bu sayfayı farklı bir kimliğe (aynı oturum adı) ayarlayın ve yerine kullanılan yeni bir oturum ziyaret edildiğinde.

Birkaç daha fazla bilgi:

  • Oturum adı elle ayarlanır
  • Tüm sayfalar aynı etki alanı adı altında aynı sunucu üzerinde
  • I üye profile.php dosyasındaki ('session-inc.php') dahil üstünde ek bir session_start () koyarsanız, oturumu doğru üzerinde yapılır
  • Ben. Htaccess de session_cookie_domain ve session.session_name ayarı denedim, bu etki alanı için çalıştı ama dışarı ödeme etki üzerine geçirilen oturumu durdu
  • Biz php 5.2.5 ile apache 2.2.6 çalışan

Üye profile.php dosyasına dahil yukarıdaki session_start () ('session-inc.php') koyarak bu sorun için hızlı ve kirli bir düzeltme, ama bu oluyor, neden herkes biliyor eğer ben merak ediyorum.

Şerefe

Irade

4 Cevap

Herhangi bir çıktı geri tarayıcıya gönderilmeden önce PHP belgelerine göre, session_start adlandırılan gerekir - bu sayfa sizin daha önce çıkışını neden olan bir haydut CR / LF, Unicode bayt sırası işareti veya benzer olabilir { [(1)]}?

PHP4 gelen PHP5 miras sitesi göç ederken ben her isteği üzerine oturumu otomatik start php neden bir php.ini yapılandırma ayarı fark ettim. Bu session_start() Her sayfa üzerine yerleştirerek bir alternatiftir ...

Bu ayarı etkinleştirmek için birden çok yolu vardır:

Php.ini içine aşağıdaki satırı koyun:

session.auto_start = on

veya apache sanal site yapılandırma içine koymak veya htaccess dosyası.:

<IfModule mod_php5.c>
  php_flag session.auto_start on
</IfModule>

ve tüm sayfalar arasında mevcut $ _SESSION değişiklikler yapmalıdır

Sorunu bulundu

Orada bir bayt sırası işareti ana başında olduğu ikinci etki dosyası içerir. ken tarafından belirtildiği gibi, cant doğru oturumu ayarı değildi, bir oturumu başlamadan önce herhangi bir çıktı var.

Sorun bir bayt sırası işareti dosyasının başında ouputted ediliyor (BOM) bulundu. Ondan kurtulmak ve oturum sorunu dizildi var.