လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> SessionHandler ကိုဘယ်လိုအကောင်အထည်ဖော်ရမလဲ :: Custom PHP session processing class ကို function function?

SessionHandler ကိုဘယ်လိုအကောင်အထည်ဖော်ရမလဲ :: Custom PHP session processing class ကို function function?

gitbox 2025-06-30

1 ။ sessionshandler :: ဖျက်ဆီး function ကဘာလဲ?

Destroy function ၏လုပ်ဆောင်ချက်သည်ရှိပြီးသား session တစ်ခုကိုဖျက်ရန်ဖြစ်သည်။ အသုံးပြုသူမှတ်တမ်းများထွက်ပေါ်လာသောအခါသို့မဟုတ် session သက်တမ်းကုန်ဆုံးသောအခါ session-related data အားလုံးကိုသန့်ရှင်းရေးလုပ်ရန် ဖျက်ဆီးခံရ လိမ့်မည်။

sessionhandler interface က ဖျက်ဆီး နည်းကိုအကောင်အထည်ဖော်ရန်ကျွန်ုပ်တို့ကိုလိုအပ်သည်။ ဤနည်းလမ်းသည်သက်ဆိုင်ရာ session data ကိုခွဲခြားသတ်မှတ်ရန်နှင့်ဖျက်ဆီးရန်အသုံးပြုသော session id ( $ session_id ) ဖြစ်သော parameter သည် parameter ကိုလက်ခံသည်။

2 ။ ထုံးစံ session processing အတန်းများအတွက်အခြေခံမူဘောင်

ပထမ ဦး စွာကျွန်ုပ်တို့သည်စိတ်ကြိုက် session processing class တစ်ခုကိုဖန်တီးရန်နှင့် sessionhander interface တွင်အမျိုးမျိုးသောနည်းလမ်းများကိုအကောင်အထည်ဖော်ရန်လိုအပ်သည်။ ဒီမှာရိုးရှင်းတဲ့မူဘောင်တစ်ခုပါ။

 <span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">MySessionHandler</span></span><span> </span><span><span class="hljs-keyword">implements</span></span><span> </span><span><span class="hljs-title">SessionHandlerInterface</span></span><span>
{
    </span><span><span class="hljs-keyword">private</span></span><span> </span><span><span class="hljs-variable">$save_path</span></span><span>;

    </span><span><span class="hljs-comment">// Initialization နည်းလမ်း,Save Path The EDC ကိုသတ်မှတ်ရန်အသုံးပြုသည်။</span></span><span>
    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">open</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$save_path</span></span></span><span>, </span><span><span class="hljs-variable">$session_name</span></span><span>)
    {
        </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;save_path = </span><span><span class="hljs-variable">$save_path</span></span><span>;
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">true</span></span><span>;
    }

    </span><span><span class="hljs-comment">// session ကိုပိတ်ပါ</span></span><span>
    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">close</span></span><span>(</span><span><span class="hljs-params"></span></span><span>)
    {
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">true</span></span><span>;
    }

    </span><span><span class="hljs-comment">// session data ကိုဖတ်ပါ</span></span><span>
    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">read</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$session_id</span></span></span><span>)
    {
        </span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;save_path . DIRECTORY_SEPARATOR . </span><span><span class="hljs-variable">$session_id</span></span><span>;
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) {
            </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
        }
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">''</span></span><span>;
    }

    </span><span><span class="hljs-comment">// session data ရေးပါ</span></span><span>
    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">write</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$session_id</span></span></span><span>, </span><span><span class="hljs-variable">$session_data</span></span><span>)
    {
        </span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;save_path . DIRECTORY_SEPARATOR . </span><span><span class="hljs-variable">$session_id</span></span><span>;
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-variable">$session_data</span></span><span>) === </span><span><span class="hljs-literal">false</span></span><span> ? </span><span><span class="hljs-literal">false</span></span><span> : </span><span><span class="hljs-literal">true</span></span><span>;
    }

    </span><span><span class="hljs-comment">// Session Data ကိုဖျက်ပါ</span></span><span>
    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">destroy</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$session_id</span></span></span><span>)
    {
        </span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;save_path . DIRECTORY_SEPARATOR . </span><span><span class="hljs-variable">$session_id</span></span><span>;
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) {
            </span><span><span class="hljs-title function_ invoke__">unlink</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
        }
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">true</span></span><span>;
    }

    </span><span><span class="hljs-comment">// အမှိုက်ပုံးစနစ်ပြန်လည်ပြုပြင်ခြင်းယန္တရား</span></span><span>
    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">gc</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$max_lifetime</span></span></span><span>)
    {
        </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-variable">$this</span></span><span>-&gt;save_path . DIRECTORY_SEPARATOR . </span><span><span class="hljs-string">'*'</span></span><span>) </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>) {
            </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">filemtime</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>) + </span><span><span class="hljs-variable">$max_lifetime</span></span><span> &lt; </span><span><span class="hljs-title function_ invoke__">time</span></span><span>()) {
                </span><span><span class="hljs-title function_ invoke__">unlink</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
            }
        }
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">true</span></span><span>;
    }
}
</span></span>

3 ။ ဖျက်ဆီးခြင်း လုပ်ဆောင်မှုအကောင်အထည်ဖော်မှုကိုအသေးစိတ်ရှင်းပြပါ

အထက်ဖော်ပြပါကုဒ်တွင် Destroy function ၏လုပ်ဆောင်မှုသည်သတ်မှတ်ထားသော session ID နှင့် session file ကိုဖျက်ရန်ဖြစ်သည်။ အသုံးပြုသူမှထွက်ရန်သို့မဟုတ် session သက်တမ်းကုန်ဆုံးရန်သို့မဟုတ် session သက်တမ်းကုန်ဆုံးသွားသောအခါ ဖျက်ဆီးခြင်း function ကိုအစပျိုးလိမ့်မည်။

 <span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">destroy</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$session_id</span></span></span><span>)
{
    </span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;save_path . DIRECTORY_SEPARATOR . </span><span><span class="hljs-variable">$session_id</span></span><span>;
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) {
        </span><span><span class="hljs-title function_ invoke__">unlink</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
    }
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">true</span></span><span>;
}
</span></span>

3.1 ဖျက်ဆီးခြင်း လုပ်ဆောင်မှု၏လုပ်ဆောင်မှုအဆင့်များ -

  • Session ID ကိုလက်ခံရရှိသည် ။ ဤလုပ်ဆောင်ချက်သည် Session ID ( $ session_id ) ကိုလက်ခံရရှိသည်။ ၎င်းသည်ကျွန်ုပ်တို့ဖျက်ရန်လိုအပ်သည့်အချက်အလက်များအတွက်ထူးခြားသောအမှတ်အသားတစ်ခုဖြစ်သည့်အထူးအမှတ်အသားတစ်ခုဖြစ်သည်။

  • ဖိုင်တည်ရှိရှိမရှိစစ်ဆေးပါ ။ ပထမ ဦး စွာလုပ်ဆောင်ချက်သည်သက်ဆိုင်ရာ session တစ်ခုရှိမရှိစစ်ဆေးလိမ့်မည်။ အကယ်. ဖိုင်မရှိပါက၎င်းကိုဖျက်ရန်လိုအပ်သည့်ဖိုင်မရှိပါဟုညွှန်ပြသည့်တိုက်ရိုက်ပြန်လာလိမ့်မည်

  • ဖိုင်ကိုဖျက်ပါ ။ ဖိုင်သည်တည်ရှိပါကဖိုင်ကိုဖျက်ရန် Unlink () function ကိုသုံးပါ။ လက်မခံပါ () ဖိုင်များကိုဖျက်ရန် PPP မှအသုံးပြုသော built-in function တစ်ခုဖြစ်သည်။

  • Reward Value : ဖျက်ဆီးခြင်းလုပ်ငန်းစဉ်ကိုအောင်မြင်စွာပြီးစီး ကြောင်း ဖော်ပြသည်။

3.2 အမှားကိုင်တွယ်မှု:

အမှန်တကယ်အသုံးပြုမှုတွင်ကျွန်ုပ်တို့သည်ဖိုင်ပယ်ဖျက်ရေးလုပ်ငန်းများလုံခြုံရေးကိုသေချာစေရန်အမှားကိုင်တွယ်သည့်ယန္တရားတစ်ခုထည့်ရန်လိုအပ်နိုင်သည်။ ဥပမာအားဖြင့်, သင်သည်ဖျက်ခြင်းလုပ်ငန်းကိုအောင်မြင်မှုနှင့်ပျက်ကွက်မှုကိုခြေရာခံရန်သို့မဟုတ် လက်မခွဲခြင်း ၏ပျက်ကွက်မှုကိုဖြည့်စွက်ရန်မှတ်တမ်းမှတ်တမ်းများကိုသင်ထည့်နိုင်သည်။

 <span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">destroy</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$session_id</span></span></span><span>)
{
    </span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;save_path . DIRECTORY_SEPARATOR . </span><span><span class="hljs-variable">$session_id</span></span><span>;
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) {
        </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">unlink</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) {
            </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Failed to delete session file: <span class="hljs-subst">$file</span></span></span><span>");
            </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;  </span><span><span class="hljs-comment">// ပယ်ဖျက်ခြင်းပျက်ကွက်လျှင်,ပြန်လာ false</span></span><span>
        }
    }
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">true</span></span><span>;
}
</span></span>

4 ။ ထုံးစံ session processing အတန်းကိုခညျြနှောငျ

PHP အတွက် PHP အတွက်ကျွန်ုပ်တို့၏စိတ်ကြိုက် session processing class ကိုအသုံးပြုရန်အတွက်သင် session_saver_handler () function မှတဆင့်စိတ်ကြိုက် session processor ကိုမှတ်ပုံတင်ရန်လိုအပ်သည်။

 <span><span><span class="hljs-variable">$handler</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">MySessionHandler</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">session_set_save_handler</span></span><span>(
    [</span><span><span class="hljs-variable">$handler</span></span><span>, </span><span><span class="hljs-string">'open'</span></span><span>],
    [</span><span><span class="hljs-variable">$handler</span></span><span>, </span><span><span class="hljs-string">'close'</span></span><span>],
    [</span><span><span class="hljs-variable">$handler</span></span><span>, </span><span><span class="hljs-string">'read'</span></span><span>],
    [</span><span><span class="hljs-variable">$handler</span></span><span>, </span><span><span class="hljs-string">'write'</span></span><span>],
    [</span><span><span class="hljs-variable">$handler</span></span><span>, </span><span><span class="hljs-string">'destroy'</span></span><span>],
    [</span><span><span class="hljs-variable">$handler</span></span><span>, </span><span><span class="hljs-string">'gc'</span></span><span>]
);

</span><span><span class="hljs-comment">// session တစ်ခုစတင်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();
</span></span>

5 ။ စမ်းသပ်ခြင်းနှင့် debugging

စိတ်ကြိုက် session processing class ကိုဖြည့်စွက်ပြီးနောက်သင်စမ်းသပ်မှုပြုလုပ်နိုင်သည်။ Session ၏ပျက်စီးခြင်းဖြစ်စဉ်ကိုအစပျိုးခြင်းဖြင့် ဖျက်ဆီးခြင်း လုပ်ဆောင်ခြင်းသည် (ဥပမာ - session_destroy) ) Session Data ကိုမှန်ကန်စွာပယ်ဖျက်ပြီးကျန်ရှိနေသေးသော Session ဖိုင်များမရှိပါ။

6 ။ အကျဉ်းချုပ်

SessionHandler ကိုအကောင်အထည်ဖော်ခြင်း SessionHandler ကိုအကောင်အထည်ဖော်ခြင်း - Destroy function သည် session အဆုံးတွင်အရင်းအမြစ်များကိုသန့်ရှင်းရေးလုပ်ရန်ကူညီသည်။ သင့်တင့်သောဖိုင်အမျိုးအစားများနှင့်အမှားအယွင်းများဖြင့်ကိုင်တွယ်ဖြေရှင်းခြင်းဖြင့်သင်ခန်းစာအချက်အလက်များကိုလုံးလုံးလျားလျားဖျက်ဆီးခြင်း,