5

我的会话似乎只在当前窗口/选项卡中有效。它似乎也很快超时。以下是我目前正在尝试的方式:

这是在我的登录控制器中:

$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();

我对这些东西比较陌生,所以请耐心等待!任何帮助将不胜感激。

4

3 回答 3

4

这就是发生的事情。该网站位于与服务器上的另一个网站共享会话文件夹的服务器上。即使我使用 ini_set 增加了会话生命周期,我的会话仍然被其他应用程序删除。

为了解决这个问题,我只需将 session.save_path 设置为一个新文件夹。问题解决了!

于 2009-11-06T15:36:21.720 回答
2

我只想补充一点,您可以使用后续行更改 .htaccess 中的 session.save_path 以使其正常工作。我看到答案以为我在.ini 中更改了它,但它在.htaccess 中。

例如:

php_value session.save_path /home/kaos/data/sessions/
于 2011-04-18T18:56:02.357 回答
1

查看 zend_session 的源代码,rememberMe() 方法调用了 rememberUntil(),它调用了内置的 php 方法 session_set_cookie_params()

因此,您可能希望检查session.cookie_lifetime的 php.ini 值。如果它不为 0,那么 Zend_Session::rememberMe() 将无用,除非该值小于session.cookie_lifetime。在这种情况下,您可能希望在 php.ini 或在您的应用程序中使用 ini_set() 将其设置为 0,如session.cookie_lifetime 手册页的第一条评论所示。

于 2009-10-17T15:38:53.690 回答