အသုံးပြုသူသည်အောင်မြင်စွာဝင်ရောက်နိုင်သည့်အခါစနစ်သည်၎င်းအတွက် session တစ်ခုဖန်တီးရန်စီစဉ်ထားပြီးအသုံးပြုသူ၏မည်သူမည်ဝါဖြစ်ကြောင်းအချက်အလက်များကို session မှတဆင့်စီမံခန့်ခွဲသည်။ အချို့သောစနစ်များတွင်လုံခြုံရေးတိုးတက်စေရန်အတွက်သို့မဟုတ်ကြာရှည်သောပျင်းရိခြင်းကြောင့်ဖြစ်ပေါ်လာသောအန္တရာယ်များကိုရှောင်ရှားရန်သို့မဟုတ်အချိန်ကြာမြင့်စွာပျင်းရိခြင်းကြောင့်အလားအလာရှိသောအန္တရာယ်များကိုရှောင်ရှားနိုင်လေ့ရှိသည်။
အသုံးများသောကုသမှုနည်းလမ်းများပါဝင်သည်:
Session Readity Time Setting : အသုံးပြုသူသည်အချိန်ကာလတစ်ခုအတွင်းမည်သည့်စစ်ဆင်ရေးကိုမဆိုလုပ်ဆောင်ခြင်းမပြုပါကသင်ခန်းစာသည်အလိုအလျောက်ကုန်ဆုံးပြီးသင့်ကိုထပ်မံဝင်ရောက်ရန်လိုအပ်သည်။
Front-end စောင့်ကြည့်လေ့လာခြင်း - ရှေ့ဆုံး - အဆုံးသည်အသုံးပြုသူစစ်ဆင်ရေး (ဥပမာနှိပ်ခြင်း, ကီးဘုတ်ထည့်သွင်းခြင်းစသည်တို့) ကိုစောင့်ကြည့်နိုင်သည်။ အချိန်ကုန်ပြီးတာနဲ့ Prompt box ပေါ်လာလိမ့်မယ်, အသုံးပြုသူကို log in လုပ်ဖို့လိုအပ်တယ်။
PHP ၏ SessionITICFARTATIONFACE သည် session နှင့်အချိန်ကုန်ပြ issues နာများကိုကိုင်တွယ်ရန်တိုက်ရိုက်ယန္တရားတစ်ခုပေးသည်။
SessionInterface သည် PHP တွင် session စီမံခန့်ခွဲမှုအတွက် interface တစ်ခုဖြစ်သည်။ developer များက developer များကို Session IDS ၏မျိုးဆက်နှင့်စီမံခန့်ခွဲမှုများကိုစိတ်ကြိုက်ပြုပြင်ခွင့်ပြုသည်။ ဤ interface သည်အထူးသဖြင့်အလိုအလျောက်အပ်နှင်းခြင်းနှင့်သက်ဆိုင်ရာအကောင်အထည်ဖော်မှုတွင်အားသာချက်များကိုမြှင့်တင်ရန်နည်းလမ်းများကိုမြှင့်တင်ရန်နည်းလမ်းများစွာကိုပေးသည်။
ပထမ ဦး စွာကျွန်ုပ်တို့သည် sessionItincface ကိုအကောင်အထည်ဖော်သည့်အတန်းတစ်ခုကိုဖန်တီးရန်လိုအပ်သည်။ ဤအတန်းတွင်ကျွန်ုပ်တို့သည် session timeout နှင့် login status ကိုဖြေရှင်းနိုင်သည်။
class SessionManager implements SessionIdInterface {
private $sessionTimeout;
public function __construct($timeout = 1800) {
$this->sessionTimeout = $timeout; // ပုံမှန်အချိန်ကုန်ရန်သတ်မှတ်ထားသည်1800စက်ဏန့်(အခုချက်ချင်း30မိနစ်)
}
public function startSession() {
session_start();
$this->checkSessionTimeout();
}
private function checkSessionTimeout() {
if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity']) > $this->sessionTimeout) {
// အချိန်ကုန်လျှင်,အလိုအလျောက် logout
session_unset();
session_destroy();
header("Location: http://m66.net/login"); // login စာမျက်နှာသို့အလိုအလျောက် redirect
exit();
}
$_SESSION['last_activity'] = time(); // နောက်ဆုံးစစ်ဆင်ရေးအချိန်ကို update လုပ်ပါ
}
public function setSessionData($key, $value) {
$_SESSION[$key] = $value;
}
public function getSessionData($key) {
return isset($_SESSION[$key]) ? $_SESSION[$key] : null;
}
public function destroySession() {
session_unset();
session_destroy();
}
}
အမှန်တကယ်အသုံးပြုမှုတွင် sessionmanager အတန်းကို PHP ပရိုဂရမ်တွင်မည်သည့် PHP ပရိုဂရမ်တွင်မဆိုပေါင်းစည်းနိုင်သည်။ အသုံးပြုသူမှတ်တမ်းများ 0 င်ရောက်သောအခါဤအတန်းကို Session Facouts ကိုစီမံခန့်ခွဲရန်အောက်ပါနည်းလမ်းများဖြင့်ခေါ်ဆိုနိုင်သည်။
// Session Manager ကိုစတင်ပါ
$sessionManager = new SessionManager(1800); // အချိန်ကိုသတ်မှတ်ပါ1800စက်ဏန့်
// session တစ်ခုစတင်ပါ
$sessionManager->startSession();
// သင် logged in ရှိလားစစ်ဆေးပါ
if ($sessionManager->getSessionData('user_id') === null) {
// အသုံးပြုသူကို logged မ,login စာမျက်နှာသို့ခုန်ပါ
header("Location: http://m66.net/login");
exit();
}
အထက်ပါ sessionmanagager class မှတစ်ဆင့်ကျွန်ုပ်တို့သည်အလိုအလျောက်အပ်နှံစနစ်ကိုအကောင်အထည်ဖော်ရန်ဖြစ်သည်။ သတ်မှတ်ထားသည့်အချိန်သည်အချိန်သတ်မှတ်ပြီးနောက်အသုံးပြုသူကိုအလိုအလျောက် login စာမျက်နှာသို့အလိုအလျောက်ထုတ်ယူခြင်းနှင့် redirected လိမ့်မည်။ သို့သော်အလိုအလျောက်အပ်နှံခြင်းကိုအကောင်အထည်ဖော်ရန်မလုံလောက်ပါ။ အထူးသဖြင့် Session TimeOut တွင်အသုံးပြုသူအားထပ်တူ 0 င်ရန်ကြံ့ဖတ်သောအချိန်ကုန်လွန်သည့်မေးခွန်းသည်အလွန်အရေးကြီးသည်။
ပိုမိုကောင်းမွန်သောအချက်ပြသူများအားသင့်အားရှေ့ဆုံးအဆုံးတွင်အချက်ပြမှုများပြုလုပ်နိုင်သည်။ ဥပမာအားဖြင့်အသုံးပြုသူအစည်းအဝေးသည်သက်တမ်းကုန်ဆုံးတော့မည်ဆိုပါကအသုံးပြုသူအားဆက်လက် log in လုပ်မယ့်သူကိုမေးကြည့်ပါ။ သို့မဟုတ် login box ကိုအချိန်ကုန်ပြီးနောက်တိုက်ရိုက်ပေါ်လာလိမ့်မည်။
// login အချိန်ကုန်ပြီးနောက်,retirect
header("Location: http://m66.net/login");
exit();