現在的網站都流行登入後, 除非按了登出, 不然就永遠是登入狀態(永不過期).(註: 相對需要更注意使用者帳號的安全問題)
不過, 這樣子設的話, 計算 目前站上人數 就得要另外想辦法做囉~ 🙂
Session 過期時間參數
設定過期時間參數, 主要是設定 session.gc_maxlifetime 的參數即可, 再保險一點的設定, 就設定下面這兩個參數.
- ini_set('session.cookie_lifetime', 0); // 可用 print_r(session_get_cookie_params()); 觀察
- ini_set('session.gc_maxlifetime', 3600); // 可用 echo ini_get("session.gc_maxlifetime"); 觀察
session_cookie_lifetime 設為 0 的話, 代表等到 browser 才把此 cookie 清掉.(session 和 browser cookie 是有相關的)
如果懶得想這些, 直接用下面的 function 就可以了~ 😛
Session 過期時間程式
下述程式轉載自: Cross-Browser Session Starter
<?php
function start_session($expire = 0)
{
if ($expire == 0) {
$expire = ini_get('session.gc_maxlifetime');
} else {
ini_set('session.gc_maxlifetime', $expire);
}if (empty($_COOKIE['PHPSESSID'])) {
session_set_cookie_params($expire);
session_start();
} else {
session_start();
setcookie('PHPSESSID', session_id(), time() + $expire);
}
}
?>
使用方式
- 於程式最上方加入: start_session(600); // 代表 600 秒後會過期 (取代原本 session_start())
如果要再延長過期時間, 只要再做修改即可.
但是有個問題要注意, 就是 PHP 的 session 預設是存成 file, 所以 /tmp 可能會因這樣設定而爆掉(檔案太多), 通常解法是把 session 存進 DB/memcache 中.
Tsung大
小弟在PHP還是生手
可否請問
小弟是租用美國iPower的主機
在主機的php.ini看是顯示1440秒
session.gc_maxlifetime = 1440
不過我每次登入網站後
沒多久就被登出了
明明登入沒有幾分鐘
回來後就被登出了
而且時間都不同
有時幾分鐘
有時十幾分鐘
感覺真的很不方便
真不曉得為何會這樣
是Server或程式有問題嗎
小弟也有在小舖發問
但還是無法解決
這是測試網址:
http://www.paohuang.com.tw/SessionTest/Login.php
這是小弟發問的網址
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20090901231637FHU&fumcde=FUM20041006152627A9N
可否請求Tsung大指點
感激不盡
謝謝
目前有在session.save_path 指定的/tmp
放一個tmp的資料夾
並將權限都設為777
已有看到一些sess_c70bf812117ed305f2200561b6b5f6bd的檔案出現
這樣不知正不正確
謝謝
您要不要試試把我上面那個 function 拿去用.
session_start() 就改成 start_session(600); 這樣子看看, 看看是不是 600秒後會登出? 🙂
感覺您真有心
搜尋很多教學文都會找到您的網站
因為印象真的很深刻..
好像很少人把自己的大頭貼拿來當shortcut icon的圖案= =
總之
感謝分享!
哈, 因為.... 我懶阿.
我也想要找其他的, 但是好累喔.. Orz..
請問我用上面的function去設定登入時間,在本機如果設定24小時大約會少8小時,放到線上主機則縮短至1小時左右會被登出,這大概會是哪一方面的問題?
本機環境是AppServ 線上主機是獨立安裝,謝謝
直接修改線上機器得 php.ini
將 session.gc_maxlifetime 這個值調大(這是秒數) 即可. 🙂
你好,我是做整合行銷的團隊,本身也是程式設計師,多次搜尋到你的文章~覺的你覺的不錯!有沒有興趣接案子~或是合作,沒興趣交個朋友也OK的!請加我的skype吧!johnnickkimo
你好, 都可以聊聊交個朋友, 只是我不用 skype 耶. Orz.
有空可以 Email 聊聊囉? 🙂
真的很常看到您的文章 謝謝您的分享!!