Nasıl PHP $ _SESSION aşımına?

2 Cevap php

Tam olarak ne oldu?

I session_set_save_handler() aslında nasıl çalıştığını anlayamıyorum ben geçiyor bilmiyorum.

2 Cevap

Session timeout is declared in php.ini
If you can edit the php.ini, change:
session.gc_maxlifetime 72000
If you cannot edit the php.ini, put this in your .htaccess file:
php_value session.gc_maxlifetime 72000
That should allow the session to "live" for at least 20 hours (72,000 seconds), even without any activity.

Bu işe yaramazsa, ve paylaşılan bir bilgisayar üzerinde iseniz, ev sahibi bir periyodik olarak oturum dizini boşaltır ki olabilir. Lütfen oturumları tüm zamanların önceden belirlenmiş bir süre sonra ölür? Bu durum buysa (yani 10 dakika?), Bir özel oturum işleyicisi kullanarak veritabanına oturumları hareket olabilir.

Çoğu kişi session.gc_maxlifetime oturumun ömrünü tanımlar düşünürdüm.

Ama bu pek doğru değil. session.gc_maxlifetime PHP'nin oturum uygulanması çöp toplayıcı süresi için oturum varsayar sonra ancak ömrü. Ama çöp toplayıcı sadece% 1 (varsayılan ayarlar) bir şans denir. Bu yüzden zaten dolmuş olsa seans kullanılmış olabilir çok muhtemel bulunuyor.

Kendi üzerinde bir oturum zaman aşımı mekanizması uygulamak ve session_set_save_handler ile kayıt eğer iyi olurdu. Bu geçerli oturum hala geçerli olup olmadığını test etmek ve zaman aşımına eğer hemen geçersiz kılmalıdır.

Daha fazla detay için my response to How do I expire a PHP session after 30 minutes? bakın.