我使用这些行在PHP中激活我的会话:
session_name("DELogin");
session_set_cookie_params((60*60*24*14), "/", ".myweb.com");
session_start();
但是,会话随机在设置的到期时间(甚至是浏览器会话)之前停止工作(似乎)。 如你所见,它应该持续2周。 是否有一些需要改变的设置?
我无法访问php.ini,但我可以通过.htaccess更改这些设置(对吗?)。
我看到session.gc_probability
,session.gc_divisor
和session.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']
的测试导致false,这应该在用户未登录时)。
因此,$_SESSION['id']
更改为false,或者会话被删除并自动(重新)生成$_SESSION['id']
false。
我该怎么办?
答案 0 :(得分:0)
您是否尝试过设置会话Cookie生命周期变量?
ini_set("session.cookie_lifetime","3600"); //an hour
此外,您可以通过创建名为phpinfo.php的文件并在其中弹出以下内容来检查PHP.ini文件中设置的设置:
<?php phpinfo(); ?>
浏览它。
答案 1 :(得分:0)
要使会话起作用,它必须在双方都有效:服务器和客户端。您的cookie参数仅适用于客户端,因此服务器端留给标准的PHP清理机制。您需要查看的参数是session.gc_maxlifetime