iT邦幫忙

0

php session 保留問題

設計了一個登入頁面讓USER登入

用了SESSION記錄登入USER是誰

然而這個SESSION在之後USER填表單
會在新增修改資料的時候 一併寫入DB 用來記錄是誰填寫的

但是為什麼SESSION消失的時間這麼不一定...

爬了一些文章
改過php.ini的參數
像是
session.gc_maxlifetime
session.gc_divisor
session.gc_probability

可是都還是會不定時消失...

基本上我希望可以讓SESSION保存一天

請問各位是否有建議作法

再請各位指教

謝謝!

看更多先前的討論...收起先前的討論...
SESSION的期限問題需要注意的地方很多
除了php的設定,還需要確定web server的設定。
然後最後才是程式上的時限宣告。最後還有暫存容量的問題。

php跟程式的部份還好處理,但server如果不是自已能控制的,那就有可能會被受限。

一般我目前的做法,是會用cookie的方式來處理。然後將session採用額外自定義的文件或是db來做處理儲存。利用cookie機制來達到永久保留的目的。
cookie只會記錄對應的id編號。從id編號來載入你要使用的session資料。

畢竟,長時效的session,很容易就會碰上暫存容量的問題。
無論你的時限宣告多久。用久了就容易碰到自動消失的session問題。
所以將session放到一定不會消失的地方是最安全的。
但相對的,你也得要有佔用容量問題的心裏準備
Neish iT邦研究生 3 級 ‧ 2018-09-26 11:41:50 檢舉
請問php設好之後 web server需要做什麼設定? (我是自架AppServ)
因為我只存LoginID 目前先改以COOKIE來實作
weiclin iT邦高手 4 級 ‧ 2018-09-26 15:17:00 檢舉
參考 https://blog.longwin.com.tw/2008/10/php-set-session-expire-time-2008/
Neish iT邦研究生 3 級 ‧ 2018-09-26 15:39:11 檢舉
感謝weiclin 這個我試過了 可是還是會消失@@

1 個回答

0
小魚
iT邦高手 1 級 ‧ 2018-09-26 12:03:06

我曾經自己處理Session寫在自己的資料庫中,
不過前提是SessionId必須是一樣的,
不過我測試的結果如果不是用無痕視窗基本上絕大部份時間會是一樣的,
偶爾會有不一樣的出現,
雖然我不是用PHP寫的,
不過結果應該出入不大.

Neish iT邦研究生 3 級 ‧ 2018-09-26 15:48:47 檢舉

我不是把Session寫在資料庫
而是在USER有編輯的時候把Session寫入資料庫欄位中
像是這樣
INSERT INTO TABLE (PartNumber,USERID) VALUES ($_POST['PartNumber'],$_SESSION["NAME"]);

$_SESSION["NAME"]是在USER登入成功後就存下來的

可是它會莫名的消失...

目前我是先改用COOKIE了

haha1811 iT邦新手 5 級 ‧ 2018-09-27 08:18:51 檢舉

我最近有把幾年前php5的程式重新放到Web上去Run,發現雖然網路上寫php7已經可以不需要session_start(),但實際上沒有下session_start()就會出現$_SESSION["NAME"]的值會不見。
提供參考!

@haha1811

PHP7並沒有不需要session_start喔。不知道你是哪邊看到的文章。
但可以設定php自動使用session_start。(但不建議這樣使用就是了)

我要發表回答

立即登入回答