2010-01-10 7 views
14

üstbilgisinde yok edildi/kaldırıldıkullanarak / adresine yeniden yönlendirmeden önce bazı oturum değerlerini ayarlayan bir komut dosyası var.PHP oturumu

Ben bu uygulamaya sonra bile header() sonra kaybolan tahrip $_SESSION değişken bir varlık/ilgili birçok mesajları okudum:

// set session here 

session_regenerate_id(true); 
session_write_close(); 
header("Location: /"); 

session_start() doğru yerlere ayarlanır

, herkes bir şey bilir ki zaten Olabilir eksik mi index.php sayfasında

bu var:

session_start(); 
print_r($_SESSION); 

// outputs nothing :'(

kod oldukça karmaşıktır yüzden hepsini, sadece parçacıkları yayımlayan olmayacaktır.

cevap

3

önce gönderilmesi gerekir :-), biz sunucu yapılandırmasıyla ilgili bir sorun olduğu sonucuna vardı şaşırtıcı değil dizi dikkate iyi olduğunu bu tür şeyler için bilinir.

+1

Daha kesin olabilir misiniz? –

+1

Hayır, maalesef yapamam. Bu zamandaki ev sahibi, geliştiricilerin 'php.ini' dosyasını değiştirmesine izin vermedi, bunu kontrol edebileceğimiz farklı ana bilgisayara taşındı ve sorun çözüldü. –

+1

Bunu okuyan biri için, çözüm bulabilirim. Bu, adresinde yayınlanan kabul edilen yanıttır. Http://stackoverflow.com/questions/17242346/php-session-lost-after-redirect – dayuloli

11

Konum üstbilgileriyle ilgili herhangi bir oturumla ilgili sorun görmedim - her iki sayfada da session_start aradığınızdan emin misiniz? Yukarıdaki session_start bit eklendi ve session_start kullanıyormuş emin olduğun gerçeğini söz önce


Hmm ... Bu cevap çok daha mantıklı.

+0

“session_regenerate_id” satırını kaldırdıktan sonra bile aynı sorun devam eder. –

+0

Ve evet, eminim ki tüm doğru yerlerde session_start() 'deniliyor. –

+0

Başlığın yerini çıkarırsanız ve doğrudan URL'yi (tarayıcıda) değiştirirseniz oturum verisi kullanılabilir mi? –

5

başlık bu soruyu kapanış sebebiyle oturumu kapatmak

session_regenerate_id(true); 

header("Location: /"); 
// the header must be sent before session close 
session_write_close(); // here you could also use exit(); 
+0

Bunu denedim ... sevinç yok. –

+0

Aynı sorun vardı ve yeniden yönlendirme çözdikten sonra "exit()" ifadesini ekledim –

4

sadece çıkış yapın; başlığından sonra: Ben Üstbilgi sonra bu

+0

Zaten –

4

çözülmesi D PHP komut dosyası çıkmak gerekir yönlendirmek:

header("Location: /"); 
exit(); 
+6

'dan daha önce yaptığımı varsayın 'exit' bir dil yapısı olduğundan yalnızca 'exit;' (parantez yok) kullanın. Sadece 2 karakter kodu kaydetmek için yararlı ipucu. :-) –

-4

Her sayfada() session_start başlatmaya gerek yoktur. tarayıcınız aynı oturumu kapatıncaya dek aynı oturumunuz php.ini içinde belirttiğiniz tüm yol için kalır.