[請益] 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