[请益] SESSION登入会自动失效

楼主: rjackie (向前走,才知道转角)   2017-05-13 16:42:08
各位先进小弟有一程式问题始终不解,还请大大帮忙。
情境式使用者登入后透过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'] 的值吗?
是否有什么方式可以排除呢?
在拜托了,感激不尽
作者: MOONRAKER (㊣牛鹤鳗毛人)   2017-05-13 16:47:00
正确而言是在每一次执行流程的最前面 不过你要所有档案都放也可以 反正第一次以后会忽略下一个问题是不会 $_SESSION里面的值跟一般变量无关一般而言php的session很可靠 超过设定时间或reboot才会消失 先查到你平台上的session lifetime 然后看你的session loss间隔 loss间隔大于lifetime那很合理反过来就有问题
作者: xdraculax (首席怪叔叔)   2017-05-13 17:29:00
被同一个服务器上别的网站清了? session_save_path
楼主: rjackie (向前走,才知道转角)   2017-05-13 19:00:00
请问M大您指的是session.gc_maxlifetime吗? 另外loss是?被别的网站清了? 挂在GCP机器上会有这问题?第一次遇到这问题,找不到解
作者: MOONRAKER (㊣牛鹤鳗毛人)   2017-05-14 00:54:00
session loss就是你session消失事件 不是专有名词
作者: Darkland (小黑XDrz)   2017-05-14 09:06:00
https://goo.gl/gGmulC 如果你是用 app engine 的话要注意 appengine 是用 memcache 来存 session data而且他默认的 lifetime 很短

Links booklink

Contact Us: admin [ a t ] ucptt.com