2009-10-16 33 views
5

Oturumum yalnızca geçerli pencere/sekmede geçerli görünüyor. Ayrıca zaman aşımı hızlı görünüyor. İşte nasıl Şu anda bunu yapmak için çalışılıyor:Zend Framework rememberMe() beni hatırlamıyor gibi görünüyor

Bu benim giriş kontrolörü içinde:

$adapter = $this->getAuthAdapter($data); 
$auth = Zend_Auth::getInstance(); 
$result = $auth->authenticate($adapter); 

if (!$result->isValid()) { 
    $this->view->err = "Invalid username or password.<br/>Please try again."; 
    return $this->render('index'); // re-render the login form 
} 

Zend_Session::rememberMe(60*60*24*7*4); 

Ve bu benim bootstrap içinde:

Zend_Session::start(); 

bazı nispeten yeni Bu şeylerin, benimle birlikte ayı! Herhangi bir yardım büyük takdir edilecektir. zend_session için kaynak aracılığıyla Looking

cevap

3

İşte olanları. Bu web sitesi, sunucudaki başka bir web sitesiyle oturumlar klasörünü paylaşan bir sunucudaydı. Oturumun ömrünü ini_set ile artırmamıza rağmen, oturumlarım diğer uygulama tarafından siliniyordu.

Bunu çözmek için session.save_path dosyasını yeni bir klasöre ayarladım. Sorun çözüldü!

1

, php yöntemi session_set_cookie_params()

Yani session.cookie_lifetime için php.ini değerlerini kontrol etmek isteyebilirsiniz inşa çağıran RememberMe() yöntemini rememberUntil (çağırır). 0 değilse, değer session.cookie_lifetime'dan daha az değilse, Zend_Session :: rememberMe() işlevi kullanılamaz olur. Bu durumda, session.cookie_lifetime man page'daki ilk yorumda belirtilen ini_set() öğesini kullanarak php.ini dosyasında veya uygulamanızda 0 olarak ayarlamak istersiniz.

+0

Merhaba Mark, gecikmiş cevap için özür dilerim. Birkaç gün içinde buraya bakmayı düşünmedim. cookie_lifetime aslında 0'a ayarlandı. session_set_cookie_params öğesinin ömürlerini ayarlayabilmesi için şunu hatırlatırım. Ancak, zend_session :: start() öğesinin oturum açma komut dosyasında çalıştırılmasının gerektiğini hatırlatır ve loginMe() işlevini çalıştırır. Düşüncesi olan var mı? – Brian

+0

Bir atış verin, seansın başlamasından hemen sonra rememberMe çağrısına dokunun. Henüz doğrulama yapmadığınız için, zaman aşımını ayarlamaya zarar veremez – Mark

2

Sadece işe yaraması için aşağıdaki satırı kullanarak .htaccess içindeki session.save_path değerini değiştirdiğinizi eklemek istiyorum. Cevabını .ini'de değiştirdiğimi düşündüm, ama .htaccess'te. Örneğin

:

php_value session.save_path /home/kaos/data/sessions/