0

我使用这些行在 PHP 中激活我的会话:

session_name("DELogin");
session_set_cookie_params((60*60*24*14), "/", ".myweb.com");
session_start();

但是,会话在设置的到期时间(甚至浏览器会话)之前随机停止工作(似乎)。如您所见,它应该持续 2 周。是否有一些设置需要更改?

我无权访问 php.ini,但我可以通过 .htaccess 更改这些设置(对吗?)。我看到了session.gc_probabilitysession.gc_divisorsession.gc_maxlifetime我认为它应该可以在不改变这些设置的情况下工作。(如果我应该改变这些,请回复)

提前致谢

编辑: 我尝试了 Eugen Rieck 和 Dan Walker 的建议,但无济于事。我在我的 .htaccess 文件中设置了设置,所以我不必在每个页面上都包含它们:

php_value session.gc_maxlifetime 1209600
php_value session.cookie_lifetime 1209600

php_value session.cookie_domain ".mydomain.com"
php_value session.name "DELogin"
php_value session.auto_start 1

但是,一段时间后它仍然被“清除”。(调查导致发现会话仍然存在,但测试$_SESSION['id']结果为假,这应该在用户未登录时进行)。因此,要么将$_SESSION['id']其更改为 false,要么会话被删除并自动(重新)生成为$_SESSION['id']false。

我应该怎么办?

4

2 回答 2

0

您是否尝试过设置会话 cookie 生命周期变量?

ini_set("session.cookie_lifetime","3600"); //an hour

此外,您可以通过创建一个名为 phpinfo.php 的文件并在其中弹出以下内容来检查 PHP.ini 文件中设置的设置:

<?php phpinfo(); ?>

并浏览它。

于 2013-11-09T16:37:30.593 回答
0

要使会话工作,它必须在双方都有效:服务器和客户端。您的 cookie 参数仅适用于客户端,因此服务器端留给标准 PHP 清理机制。您需要查看的参数是session.gc_maxlifetime

于 2013-11-09T16:38:17.347 回答