【发布时间】:2017-09-01 17:45:46
【问题描述】:
我使用以下脚本登录
session_start();
$_SESSION['username'] = $query[0]['username'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['image'] = $query[0]['image'];
$_SESSION['role'] = $query[0]['role'];
$_SESSION['banned'] = $query[0]['banned'];
$_SESSION['id'] = $query[0]['id'];
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['useragent'] = $_SERVER['HTTP_USER_AGENT'];
setcookie(session_name(),session_id(),time()+604800,"/");
//redirect to homepage since now logged in.
现在我再次回到主页并登录,一切正常。 但仅仅几个小时后,isset($_SESSION['username']) 会返回 false,但过期时间仍然设置为 7 天,并且 cookie 仍然存在。
到期日的时间比我所在时区的实际时间晚 1 小时。不确定这是否重要。我将时区服务器端更改为随机时区,cookie 过期数据没有改变。
.htaccess:
php_value session.cookie_lifetime 604800
php_value session.gc_maxlifetime 604800
(此 htaccess 位于 root 中,上面的第一个代码块位于 root/login 中。不确定是否重要)。
【问题讨论】:
-
你的电脑时间是格林威治标准时间 18:52
-
@craig 正确。
-
设置时区再试一次 - date_default_timezone_set('Your time zone');
-
@craig 设置时区有什么好处?真的没必要。
-
我仍然遇到这个问题 - 再有帮助会很棒
标签: php .htaccess session cookies