【发布时间】:2017-12-12 20:24:01
【问题描述】:
我有一个网站,用户有时需要一个多小时才能填写表格并提交给 mysql。我已将 session.gc_maxlifetime 调整为 7200(2 小时),并且验证的 cookie 超时为 0,表示永远不会。在默认的 24 分钟后,网站仍会将他们发送回登录页面,而不保存他们的数据。我已将 session_start() 添加到索引和我的 head.php 以供所有其他页面通过包含查看。任何帮助都是极好的。 托管在godaddy,所以我不能修改php.ini,他们让我修改.user.ini。当我回显它正确显示的信息时。
SESSION START-<?php echo $_SESSION['time']; ?> Displays time user logged in.
SESSION TIMOUT-<?php echo ini_get('session.gc_maxlifetime'); ?> Displays 7200
SESSION COOKIE-<?php echo ini_get('session.cookie_lifetime'); ?> Displays 0
<?php
function error_found(){
header("Location: inc/records.php");
}
$lifetime=0;
session_set_cookie_params($lifetime);
ini_set('session.gc_maxlifetime', 7200);
session_start();
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-control: no-cache");
header("Pragma: no-cache");
ob_start();
注意:刷新页面、提交表单或任何其他导航时,session_start() 不会更新。会不会是这个问题?
【问题讨论】:
-
phpinfo.php 显示:指令本地值主值 session.auto_start Off Off session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_httponly Off Off session.cookie_lifetime 0 0 session.cookie_path // session.cookie_secure Off Off session.entropy_file no value no value session.entropy_length 0 0 session.gc_divisor 1000 1000 session.gc_maxlifetime 7200 1440 session.gc_probability 1 1 session.hash_bits_per_character 5 5
-
这三行是调试用的吗?如果是的话,我会在设置所有标题和会话功能后移动它们
-
它们用于调试。他们追求一切。它们来自内部页面。 SESSION 函数加载到索引上。然后该行来自重定向页面“records.php”
-
更新。我已经进行了更多故障排除,并且该站点显然不关心 SESSION 超时。我正在呼应 ini_get('session.gc_maxlifetime') 并且我在过去 3 个小时内看到了它。如果我在 24 分钟内“刷新了页面”,则允许提交表单。那么这会是一个cookie问题吗?同样,我将 cookie 设置为 0。还有更多数据有帮助吗?
-
我已将 .user.ini 添加到所有子文件夹中。闲置 24 分钟后,它仍会返回提交时的登录页面。我已经用尽了我能想到的所有选择。有任何想法吗?在盒子里,在盒子外面,随机?任何事情都会非常感激。