ស្វែងយល់ពី SESSION និង COOKIE នៅក្នុងភាសា PHP
PHP
14 December 2019

ស្វែងយល់ពី SESSION និង COOKIE នៅក្នុងភាសា PHP

By

នៅក្នុងភាសា PHP ក៏មានប្រើ COOKIE ផងដែរ រួមទាំង SESSION ទៀតផង។ ការប្រើប្រាស់ SESSION និងCOOKIE មានប្រយោជន៍ទៅតាម ការប្រើប្រាស់ជាក់ស្តែង ក្នុងភាសា PHP ។  ក្នុងអត្ថបទនេះ នឹងបង្ហាញពីភាពខុសគ្នា និងការប្រើប្រាស់ SESSION និង COOKIE នៅក្នុងភាសា PHP ស្របទៅតាមតំរូវ ការនៅក្នុងគំរោង (Project) នានារបស់អ្នកសរសេរកម្មវិធី (Programmer) ។

១. SESSION: ត្រូវបានគេប្រើប្រាស់សំរាប់ជាមធ្យោបាយមួួយ ដើម្បីបង្កើតទិន្នន័យមួយ ដែលអាចទាញយកបានគ្រប់ Page ក្នុងគេហទំព័រទាំងមូល ប៉ុន្តែវានឹងបាត់បង់ទៅវិញផងដែរ ។  ជាដំបូង SESSION បង្កើត File មួយទុកនៅក្នុង Directory បណ្តោះអាសន្ននៅលើម៉ាស៊ីនមេ (Server) ឬតាមរយៈ Database ដើម្បីរក្សាទុក SESSION Variable មួយ និង តំលៃរបស់វា ដែលអាចទាញយកមកប្រើប្រាស់បាន។

ក្រោយពេលមាន SESSION មានហើយនៅក្នុងម៉ាស៊ីនមេ វានឹងបាត់បងទៅវិញ ក្រោយពេលអ្នកប្រើប្រាស់បិទ Browser ឬចាកចេញ (Logout) ពីគេហទំព័រ ។ ម្យ៉ាងវិញទៀត វាអាចនឹងបាត់បង់ ដោយសារអ្នកសរសេរកម្មវិធី (Programmer) ជាអ្នកកំណត់ ក្នុងកំឡុងនៃសកម្មភាពណាមួយ របស់អ្នកប្រើប្រាស់។

ជាជំហានដំបូង ចំពោះការចាប់ផ្តើមប្រើប្រាស់ SESSION នៅក្នុងកូដភាសា PHP ត្រូវប្រើ Function មួយឈ្មោះ session_start() ។ Function នេះ នឹងពិនិត្យមើលថាតើ SESSION អាចចាប់ផ្តើមបានហើយ ឬនៅ ។ Function នេះ គួរតែដាក់នៅបន្ទាត់លើគេក្នុង File PHP ។ Programmer អាចបង្កើត SESSION Variable ដោយប្រើប្រាស់នូវ $_SESSION[] នៅពេលនោះ អាចទាញយកតំលៃ SESSION ដែលបានបង្កើត។

នៅក្នងថ្ងៃនេះយើងសូមលើកយកប្រធានបទមួយដែលទាក់ទងទៅនឹងជំនាញនៃការសរសេរកូដ ដើម្បីបង្កើតវេបសាយ រឺក៏ប្រពន្ធគ្រប់គ្រង ហើយផ្នែកដែលយើងចង់ធ្វើការពិភាក្សានោះគឺ PHP Sessions។

បើយើងនិយាយអំពី session វាគឺជាវិធីសាស្រ្តមួយដែលយើងអាចរក្សាទុកពត៏មាន នៅខាងក្នុងអញ្ញាតដើម្បីយកវាទៅប្រើប្រាស់នៅលើទំព័រផ្សេងទៀតនៅក្នុងវេបសាយ។

តើអ្វីគឺជា PHP Session?

នៅពេលដែលអ្នកធ្វើការជាមួយ application អ្នកបើកវា ហើយធ្វើការផ្លាស់ប្តូរទិន្នន័យមួយចំនួន បន្ទាប់មកអ្នកធ្វើការបិទកម្មវិធីវិញ។ ចំនុចទាំងនោះគឺដូចគ្នាជាមួយនឹង session។Computer ដឹងថាអ្នកគឺជានរណា ហើយថែមទាំងដឹងថានៅពេលណាដែលអ្នកចាប់ផ្តើមដំណើរការកម្មវិធី នឹងពេលណាដែលអ្នកបញ្ចប់ដំណើរការកម្មវិធី។ ប៉ុន្តែនៅលើ Internet គឺមានបញ្ហាមួយគឺ Web Server មិនបានដឹងទេថាអ្នកគឺជានរណា បានធ្វើអ្វីខ្លះ មូលហេតុគឺដោយសារ HTTP Address មិនអាចរក្សានៅពត៏មានទាំងអស់នោះ។ ជាដំណោះស្រាយ អ្នកជំនាញផ្នែកបច្ចេកវិទ្យាបានបង្កើតដំណោះស្រាយមួយគឺ SESSIONS។ អញ្ញាតរបស់ sessions ដោះស្រាយបញ្ហាទាំងនោះដោយរក្សារទុកនៅពត៏មានរបស់អ្នកប្រើប្រាស់ ដែលអនុញ្ញាតអោយ Developer យកវាទៅប្រើប្រាស់បាននៅលើទំព័រផ្សេងៗបានយ៉ាងងាយស្រួល។

ដើម្បីចាប់ផ្តើម PHP Session

យើងត្រូវប្រើរូបមន្ត session_start() ដើម្បីចាប់ផ្តើមដំណើរការនៃ session។
ឧទាហរណ៏៖ អ្នកអាចធ្វើការបង្កើត php file មួយនៅក្នុង local server របស់អ្នក ដែលមានឈ្មោះថា index.php ហើយ ចម្លងកូដនៅខាងក្រោមដាក់ចូលទៅក្នុង file នោះ។​

<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Set session variables
$_SESSION[“firstname”] = “zour”;
$_SESSION[“lastname”] = “bong”;
echo “Session variables are set.”;
?>

</body>
</html>

ដើម្បីចាប់តម្លៃរបស់ PHP Session

ចំណុចបន្ទាប់គឺជារបៀបដែលអ្នកចង់ធ្វើការចាប់តម្លៃនៃ session ដែលអ្នកបានបង្កើតនៅក្នុងឧទាហរណ៏ខាងលើ យកមកប្រើប្រាស់នៅលើ page ផ្សេងទៀត។
ចំណាំ៖ នៅក្នុង file ផ្សេងទៀតប្រសិនបើអ្នកចង់ប្រើ  session ដែលអ្នកបានបង្កើតរួចហើយចាំបាច់ត្រូវតែមាន  session_start() function នៅពីខាងលើ HTML tag ជាមុនសិន

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// echo session variables that were set on index.php page
echo “Firstname is ” . $_SESSION[“firstname”] . “.<br>”;
echo “Lastname is ” . $_SESSION[“lastname”] . “.”;
?>

</body>
</html>

  • ដើម្បីផ្លាសប់ប្តូរតម្លៃរបស់ PHP Session អ្នកគ្រាន់តែធ្វើការសរសេរផ្តល់តម្លៃអោយ session variable ម្តងទៀតជាការស្រេច។
  • ដើម្បីលុបតម្លៃរបស់ PHP Session

ប្រសិនបើអ្នកចង់ធ្វើការលុបចោលនៅ session ដែលអ្នកបានធ្វើការផ្តល់តម្លៃអោយហើយចោលវិញ អ្នកអាចប្រើប្រាស់ Build-in function ពីរគឺ session_unset() & session_destroy()។

ឧទាហរណ៏៖ អ្នកអាចធ្វើការបង្កើត file ផ្សេងទៀតដែលមានឈ្មោះថា delete_session.php

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// remove all session variables
session_unset();

// destroy the session
session_destroy();
?>

</body>
</html>

ជាឧទាហរណ៍៖

_session

ផ្អែកលើឧទាហរណ៍ខាងលើ បន្ទាត់ទី១៣ Function unset() ត្រូវបានគេប្រើសំរាប់លុប SESSION variables មួយ ចេញពី Server ។ ចំពោះបន្ទាត់ទី២០ Function session_destroy() គេប្រើសំរាប់លុប SESSION variables ទាំងអស់ ចេញពី Server ។ បញ្ជាក់៖ Function unset() និង session_destroy() ទាំងពីរខាងលើ មិនមែនត្រូវតែប្រើទាំងពីរដូច ឧទាហរណ៍ខាងលើនោះ ពោលគឺប្រើទៅតាម តំរូវការជាក់ស្តែងរបស់ Programmer ។

២. COOKIE : ត្រូវបានប្រើប្រាស់ ជា file តូចមួយ ដែលរក្សាទុកក្នុងម៉ាស៊ីនកូន (Client Computer) ដើម្បីប្រើប្រាស់ ក្នុងករណីណាមួយ ជាពិសេស គឺការបញ្ជាក់ ពីអ្នកប្រើប្រាសម្នាក់ ។ Function setCookie() ត្រូវបានប្រើប្រាស់ ដើម្បី បញ្ជាក់ពី COOKIE មួយ បញ្ជូនទៅកាន់ HTTP Header ។ ដើម្បីទាញតំលៃពី COOKIE  អ្នកសរសេរកម្មវិធី (Programmer) អាចប្រើប្រាស់ $_COOKIE[]  $HTTP_COOKIE_VARS[] ដែលផ្ទុកនូវគ្រប់តំលៃនៃឈ្មោះ COOKIE និង តំលៃ COOKIE ។

setcookie ( $name$value = “” , $expire = 0 , $path = “” , $domain = “” , $secure = false, $httponly = false )

១. $name : កំណត់ឈ្មោះរបស់ COOKIE ដែលត្រូវការ (Required) ៕

២. $value : កំណត់តំលៃនៃ COOKIE Variable សំរាប់រក្សាទុក ឬទាញតំលៃ ។ ឧទាហរណ៍ថា កំណត់ឈ្មោះ $name ជា ‘cookie_name’ ហើយតំលៃដែលអាចទាញមកវិញ គឺ $_COOKIE[‘cookie_name’] ។

៣. $expire : កំណត់ចំនួននៃពេលវេលាជា វិនាទី (Second) ដែលអាចផុតកំណត់ ដូចជា ១ ថ្ងៃ ( time()+60*60*24)  ឬ ៣០ ថ្ងៃ (time()+60*60*24*30) ។ ជាទូទៅ វានឹងផុតកំណត់ដោយខ្លួនឯងក្នុងរយៈពេល ៣០ ថ្ងៃ ប៉ុន្តែបើកំណត់ តំលៃសូន្យ ឬ មិនកំណត់ទេ វានឹងផុតកំណត់ នៅពេល Browser បិទ ដូច SESSION ។

៤. $path : កំណត់ផ្នែក (path) ដើម្បីរក្សាទុកលើ Server ។ បើសិនជាកំណត់ ‘/’ មានន័យថា កំណត់គ្រប់ Path នៅក្នុង Domain ទាំងមូល ។

៥. $domain : កំណត់ឈ្មោះ Domain សំរាប់គ្រប់ COOKIE ទាំងអស់ ។

៦. $secure : កំណត់តំលៃ true/false ឬ 1/0 ដើម្បីបញ្ជាក់ពី សុវត្ថិភាព នៃ COOKIE។

៧. $httponly : កំណត់តំលៃ true/false ដើម្បីបញ្ជាក់ថា អាចដំណើរការតែលើ HTTP បើ true ។

ឧទាហរណ៍៖

_cookie

ជាលទ្ធផល COOKIE មួយឈ្មោះ ‘user_name’ នឹងរក្សាទុកតំលៃ ‘user_named_david’ ដែលនឹងផុតកំណត់ ៣០ថ្ងៃបន្ទាប់ ហើយស្ថិតនៅក្នុង localhost ។

_cookie_result_1

ដើម្បីកំណត់សុវត្ថិភាពនៃការប្រើប្រាស COOKIE សាកល្បងបន្ថែមកូដដូចខាងក្រោម៖

setcookie($cookie_name, $cookie_value, time() + (60*60*24* 30), ‘/’, ”, true, true);

នោះនឹងទទួលបានលទ្ធដូចខាងក្រោម៖

_cookie_result_2

អរគុណសម្រាប់ការស្វែងយល់។ ប្រសិនបើមានចំងល់អាច comment សួរបាន។

Prev Post

គេហទំព័រល្បីៗ ទាក់ទងនឹង​អាយធី (IT) ​ខ្មែរ ៖

Next Post

របៀបបង្កើតមាតិកា (Table of Content) ក្នុង…

post-bars