相关疑难解决方法(0)

会话永远不会过期

我在我的网站上使用登录功能与会话.无论用户是否已注销,我的本次会议都会在几分钟后过期.现在我想要的是会话应该只在用户注销时才会过期.如果用户没有注销他的帐户然后在2-3天后回来,那么他应该出现登录.

我已经找到了一些例子,他们已经增加了一个会话到期的时间,但我希望它只应该在用户退出事件时到期而不管他注销的时间.

我怎样才能做到这一点??

编辑:

session_cache_expire(0);
session_start();
Run Code Online (Sandbox Code Playgroud)

这是写这种方式吗?

php session session-timeout

15
推荐指数
1
解决办法
2万
查看次数

当将来设置客户端时钟时,PHP会话立即到期

我开发了这个PHP Web应用程序,现在运行了几个月.突然,其中一个用户抱怨他能够登录,但是一旦他点击任何按钮就会终止会话!同样的问题发生在不同的浏览器上.

经过一些测试后,我意识到每次用户点击任何按钮时都会创建一个全新的会话ID,这可能是因为原始会话已过期.

无论出于何种原因,我都瞥了一眼用户的电脑时钟......惊喜!他的时钟在未来3个月!我不知道这件事是否与失败有任何关系,但我确实修好了时钟.它仍然没有用.我删除了所有的cookie.依然没有.所以我重新启动了浏览器 - 然后它再次开始工作!

我得到的关于这个问题的最接近的信息是Shimon Amit对这个问题的回答.好,现在我知道时钟"错误配置"是原因.问题是......我无法控制每个客户的计算机时钟.他们中的一些人将来可能会设置他们的计算机时钟.

我的问题:这有什么解决方案吗?任何诡计?我不希望客户面对这样的错误,因为他们可能会发现它"跛脚"并打破他们对应用程序的信任,即使这不是我的错(在某种意义上).

php session clock

7
推荐指数
2
解决办法
1878
查看次数

Zend_Session_Namespace和setExpirationSeconds

我在Zend_Auth会话上设置超时有问题这是我的代码:

$authSession = new Zend_Session_Namespace('Zend_Auth');
$authSession->setExpirationSeconds(60*60*24*1);
Run Code Online (Sandbox Code Playgroud)

此代码应使会话在1天后过期,但实际会话在约30分钟后到期.谁知道什么是错的?谢谢.

zend-framework zend-session

0
推荐指数
1
解决办法
3652
查看次数