2017-06-23 10 views
0

このzendアプリケーションでは、開始ページに移動すると、PHPSESSIDという名前のクッキーがあることがわかります。 私はログインし(カスタムログイン)、ユーザーは保護されたページを通過できます。 しかし、彼が30分以上非アクティブである場合、保護されたページを要求すると、アプリケーションは彼をログインページにリダイレクトします。セッションを一定時間有効にする方法

私が焦点を当てていたのはPHPSESSIDでした。最初は30分に設定されていました。私はsetcookieへのグローバルコールのようなものに「28800」を追加することでそれを増やしました。

このページを再読み込みすると、PHPSESSIDが8時間後に期限切れになることがわかりました。 これにもかかわらず、使用は30分後にはまだログアウトされています。 したがって、Cookieの有効期限を変更しても何も与えられませんでした。 次は何ですか? PHPセッションの継続時間を変更しますか? 現在、関連する値は次のとおりです。

session.cache_expire: 180 
session.gc_divisor: 1000 
session.entropy_length:32 
session.gc_maxlifetime: 14400 
session.gc_probability:1 
session.name: PHPSESSID 

それともこれは、フレームワーク自体に関連しているのですか?セッションの期限を調整するためにZendのどこかに?

+0

おそらく、コードのどこかでZend_Session_Namespaceの "setExpirationSeconds"を30分に設定しています。それを見つけて8時間に変更してみてください。 –

答えて

1

zendを使用している場合は、これを試してください。

$auth = Zend_Auth::getInstance(); 

if ($auth->hasIdentity()) { 
    $authns = new Zend_Session_Namespace($auth->getStorage()->getNamespace()); 
    $authns->setExpirationSeconds(60 * 30); //expire auth storage after 30 min 
} 
1

同じディレクトリにセッションファイルを格納している複数のPHPサイトがある場合、gcプロセスは異なるセッションセットを持つことがあります。この場合、セッションファイルを別のディレクトリに保存します。

関連する問題