作者rjackie (向前走,才知道转角)
看板PHP
标题[请益] SESSION登入会自动失效
时间Sat May 13 16:42:08 2017
各位先进小弟有一程式问题始终不解,还请大大帮忙。
情境式使用者登入後透过session记录帐号密码在於每一页中
判断次否有值与验证帐号密码是否正确,纪录程式如下:
session_start();
$_SESSION['account_no'] = $post_account_pw_data['no'];
$_SESSION['password'] = $post_account_pw_data['password'];
而每页的验证如下:
if($_SESSION['account_no'] != "" AND $_SESSION['password'] != ""){
//资料库查询帐号密码
if(empty($member_check_data['no'])){
echo "登入过期";
exit();
}
}else{
echo "请先登入";
}
基本上是没有什麽问题,但是最近开始出现不定期或是不定时会发生session遗失
造成使用者需要重新登入的问题。
想请教session_start();是否一定要放在所有网页的最前端呢?
目前环境是架在GCP上使用PHP7
另外一个问题是,如果$_SESSION['account_no']是存在的,而其他程式产生
$account_no = x;这样会影响到$_SESSION['account_no'] 的值吗?
是否有什麽方式可以排除呢?
在拜托了,感激不尽
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.216.19.62
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1494664931.A.105.html
1F:→ MOONRAKER: 正确而言是在每一次执行流程的最前面 不过你要所有档案 05/13 16:47
2F:→ MOONRAKER: 都放也可以 反正第一次以後会忽略 05/13 16:47
3F:→ MOONRAKER: 下一个问题是不会 $_SESSION里面的值跟一般变数无关 05/13 16:48
4F:→ MOONRAKER: 一般而言php的session很可靠 超过设定时间或reboot才会 05/13 16:49
5F:→ MOONRAKER: 消失 先查到你平台上的session lifetime 然後看你的 05/13 16:54
6F:→ MOONRAKER: session loss间隔 loss间隔大於lifetime那很合理 05/13 16:54
7F:→ MOONRAKER: 反过来就有问题 05/13 16:54
8F:→ xdraculax: 被同一个伺服器上别的网站清了? session_save_path 05/13 17:29
9F:→ rjackie: 请问M大您指的是session.gc_maxlifetime吗? 另外loss是? 05/13 19:00
10F:→ rjackie: 被别的网站清了? 挂在GCP机器上会有这问题? 05/13 19:02
11F:→ rjackie: 第一次遇到这问题,找不到解 05/13 19:02
12F:→ MOONRAKER: session loss就是你session消失事件 不是专有名词 05/14 00:54
14F:→ Darkland: 要注意 appengine 是用 memcache 来存 session data 05/14 09:06
15F:→ Darkland: 而且他预设的 lifetime 很短 05/14 09:07