Beklendiği gibi PHP $ _SESSION çalışmıyor

3 Cevap php

Ben uyguluyorum bir PHP web sitesi var ve bu bir noktada çalıştı teyit ettik.

Biz saklayan bir giriş sistemi kullanan bir web sitesi var, bir bir $_SESSION['user'] değişkene kullanıcının bilgileri kaydedilir. header() ana sayfasına yönlendiriliyorsunuz sonra, aslında oturumu kısmını kaldırıldı /logout.php hangi tıklandığında kullanıcı oturumunu için kullanılan bir site.

Son zamanlarda itibariyle, /logout.php print_r() hata ayıklama amaçları için çıktı eskisi zaman nasılsa oturum bilgilerini görmüyor üstündeki session_start() ile dosya.

Ben başka bir sayfaya giderseniz, ben oturum bilgileri sadece iyi bakın, ama çıkış sayfasında ... hangi erişilebilir değil çünkü ben, oturum bilgi silemezsiniz tam olarak neden.

Ben tarayıcı kapatılıncaya kadar $_SESSION sitede küresel olduğunu düşündüm. Ben bu durum hiç ettik ve ben oturum örneği bu sayfada başladı biliyorum, bu yüzden bana oturum verilerini gösteren değil garip.

Herhangi bir fikir? Ben tamamen bu bir stumped!

Kod: / logout.php

<?
#session_start() is inside this file
require_once($_SERVER['DOCUMENT_ROOT'].'/includes/config.php');

unset($_SESSION['user']);
header("location: /");
exit();
?>

Ve kontrol $_SESSION['user'] site geniş ve farklı şeyler için gerektiğinde ben altındaki çeşitli öğeleri arayın. Başka birisi bu siteyi inşa ve ben onları aniden için çalışmıyor neden hata ayıklamak çalışıyorum.

3 Cevap

Eğer (yani example.com vs www.example.com / logout.php) ile başlayacak oturumu set same exact etki logout.php erişen

Sadece özel oturum verileri unsetting gelince, session_destroy() aramak ve daha sonra oturumu öldürmek için çerezleri unset iyi olurdu.

Domain / subdomain sayfanın geri kalanı gibi aynı ise, ben bu çıktı hatası vs tipik bir oturumda benziyor söyleyebilirim. Eğer tüm hataları etkin emin olun, ve sen çağırmadan önce müşteriye çıktı basılmış olabilir, onları görüntülemek session_start(). Bu fonksiyon kırmak ve oturumları kullanılamaz hale olacaktır.

(Bu durumda ise) sorunu çözmek için, session_start önce tüm çıktıyı kaldırmanız gerekir. Önce bile bir boşluk <?php Apache tarafından çıkış olarak (ve diğer) olacak. Ayrıca, (herhangi bir iyi editör sadece "Mevcut dosya setings" gibi bir şey aramak, bunu değiştirmek izin verir) Eğer belgede engelli BOM (Byte Order Mark) olduğundan emin olun.

Her zaman PHP kod ilk satırı session_start(); olması ve başka bir şey olmalıdır hatırlıyorum. Olarak yapacağım tüm oturum değişkenleri unset ve oturumu yok ederseniz, require_once($_SERVER['DOCUMENT_ROOT'].'/includes/config.php'); kaldırmayı deneyin ve) (session_start ekleyin ve session_destroy () logout.php dosyanın sonunda ve görmek eğer çalışır.