我在哪里可以在WebsiteBaker中设置默认会话过期时间?默认情况下,它会在 10 分钟内销毁。我想在开发期间设置更多的分钟/小时,然后想更改为默认值或 x MINS。
请帮我等待您的回复。
谢谢
我在哪里可以在WebsiteBaker中设置默认会话过期时间?默认情况下,它会在 10 分钟内销毁。我想在开发期间设置更多的分钟/小时,然后想更改为默认值或 x MINS。
请帮我等待您的回复。
谢谢
Websitebaker 至少当前的 2.8.2 版本和即将推出的 2.8.3 版本完全依赖于服务器设置的会话生命周期。
如果您想要不同的会话设置,您可以将您的设置添加到 config.php 之前:
require_once(WB_PATH.'/framework/initialize.php');
这仅在您的服务器允许脚本覆盖时才有效。
另一种选择是使用 .htaccess 文件或更改服务器设置。
我假设你自己没有改变它(否则我猜你会记得你是怎么做的)并且 10 分钟看起来像一个奇怪的默认值。我敢说您将应用程序托管在共享服务器中,会话数据存储在默认共享位置,并且来自另一个客户的其他应用程序设置了较低的会话寿命。出现这个问题是因为会话数据不是站点感知的:当 PHP 垃圾收集器删除 10 分钟内未访问的会话文件时,它会删除目录中的所有文件;它无法知道它们属于哪个网站。
我无法告诉您如何在 WebsiteBaker 中修复它,但在常规 PHP 中,您需要在您的帐户中设置自定义会话目录。然后(并且只有那时)您将完全控制自己的会话数据:
session_save_path('/home/users/foo/sessions');
ini_set('session.gc_maxlifetime', 3*60*60); // 3 hours (or whatever you need)
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 100);
session_start();
我对网站面包师一无所知,所以找到会话的开始位置(在你的项目中搜索所有文件中的 session_start(); ),然后在该行之前你可以使用:
//first parameter expects the number of seconds session cookie should be kept by the
//browser , in our case 10 seconds
session_set_cookie_params(10);
或者另一种选择,在您的网站面包师应用程序 (index.php) 的根目录添加该行,您应该准备好了。
注意:如果会话 cookie 被浏览器破坏,那么 php 将在您调用时发出另一个会话 id session_start();
,所以我们并不关心最后一个会话是否仍然被认为是活动的/活动的,因为在您的 php 脚本中,您将有一个空的$_SESSION
. 此外,您可以设置ini_set('session.gc-maxlifetime', 10);
以便垃圾收集器删除以前的会话,以防您将会话存储在磁盘上。