Zend Framework rememberMe() が私を覚えていないようです
-
21-09-2019 - |
質問
私のセッションは現在のウィンドウ/タブでのみ有効のようです。また、タイムアウトが早いようです。私が現在それをやろうとしている方法は次のとおりです。
これは私のログインコントローラーにあります:
$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);
そしてこれは私のブートストラップにあります:
Zend_Session::start();
私はこのことについては比較的初心者なので、ご了承ください。ご協力をいただければ幸いです。
解決
ここで起こっていたものです。このウェブサイトは、サーバー上の別のウェブサイトとのセッションフォルダを共有するサーバー上にありました。私はini_setとのセッションの寿命を増加させたにもかかわらず、私のセッションは、まだ他のアプリケーションによって削除されていました。
新しいフォルダに、この私だけでセットsession.save_pathはを解決するには、。問題は解決!
他のヒント
私はちょうどあなたがそれを動作させるためにフォロー行での.htaccessにsession.save_pathはを変更することを追加したいです。私は答えは私がの.iniでそれを変更する考えましたが、それは.htaccessの中にあります。
例えば、
php_value session.save_path /home/kaos/data/sessions/
zend_session のソースを見ると、rememberMe() メソッドが rememberUntil() を呼び出し、これが組み込みの php メソッド session_set_cookie_params() を呼び出します。
したがって、php.ini の値を確認するとよいでしょう。 session.cookie_lifetime. 。0 ではない場合、値が以下でない限り Zend_Session::rememberMe() は役に立ちません。 session.cookie_lifetime. 。この場合、最初のコメントに示されているように、php.ini またはアプリケーションで ini_set() を使用して、これを 0 に設定する必要があります。 session.cookie_lifetime のマニュアルページ.