2010-04-27 17 views
6

Bu biraz garip gelebilir. Belirli bir tarayıcıyla çok özel bir koşul altında bazı problemler yaşıyorduk ve nihayetinde, sorunu session_regenerate_id() yaptıktan sonra eski seansları doğru bir şekilde yok etmediğimiz gerçeğine daralttık. Ben şimdi bu sorunu session_regenerate_id (true) yaparak çözdüğüme inanıyorum, ancak önceki oturumların gerçekten daha fazla var olmadığını nasıl doğrular? Birisi cURL'yi önerdi ancak dokümanlarımın yolunu bulamıyorum. Ne yazık ki (?) Patron bir cevap için 'sadece işe yarıyor' demez, bu yüzden herhangi bir tavsiyeye gerçekten değer veriyorum!Eski bir oturumun gerçekten yok edildiğini nasıl doğrularsınız?

+0

SO halklarının anlamadıkları soruları yanıtlama eğilimi gösteriyor. Tam olarak "oturum" altında ne demek istiyorsun? Hangi materyal önemlidir? Ve neden bu sorunu gerçekten daralttığına emin misin? –

cevap

4

sadece yenisi ile cari oturumu değiştirecektir. Yani eski oturum dosyasının aslında silinmesi gerekmez. Ancak, session_regenerate_id(true); eski oturum dosyasını silecektir. Eski oturumunda Ayrıca session_destroy() yapabilirsiniz bu

<?php 
$file=ini_get('session.save_path')."/sess_".session_id(); 
$gotDeleted = file_exists($file); 
?> 

gibi bir şey yapabilirsiniz silinirse (http://php.net/session_regenerate_id)

kontrol etmek. Bazı değişkenleri tutmanız gerekiyorsa, belirli $_SESSION değerlerinde unset() deneyebilirsiniz.

+0

Evet, çoğu durumda geçerli, ancak bazı özel durumlarda işe yaramayacak. Özellikle kodunuzda session_name ("WHATEVERNAMESESSID") kullanırken. Onu kaldırabilmenin hiçbir yolu yok. Tarayıcı (firefox) kapanana kadar hala orada olan oturum. Çok ilginç! – B4NZ41

1

Oturum verilerinin kaybolduğundan emin olmak için, oturum kaydetme arka ucuna bakmalısınız. Varsayılan olarak, oturumları düz disk dosyaları olarak depolar (bu nedenle oturum, örneğin bir apache yeniden başlatmayı sürdürür). Bunları gözden geçirmek ve gözlemlediğiniz oturuma karşılık gelen kişinin etkin bir şekilde silinip silinmediğini kontrol etmek isteyebilirsiniz.

Ya da, eğer bu çok önemli bir bilgi ise, kendi oturum arka ucunuzu (ki bu hiç de zor değil) daha fazla kontrole ve daha fazla hata ayıklama seçeneklerine sahip olmak isteyebilirsiniz (verileri el ile yok edersiniz ve Verilerin silindiğini göstermek için günlük ifadeleri ekleyebilirsiniz.

Buraya bakın: Burada http://php.net/manual/en/function.session-set-save-handler.php

Veya: Varsayılan session_regenerate_id(); olarak http://devzone.zend.com/article/141

İlgili konular