作者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/m.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