ບົດທີ 10 Session ແລະ Cookie (ຕໍ່)

10.2 ຄຸກ​ກີ້(cookie).
​      ຄຸກ​ກີ້ ​ແມ່ນ​ຂໍ້​ມູນ​ທີ່​ເຮົາ​ສົ່ງ​ໄປ​ເກັບ​ໄວ້​ໃນ​ເຄື່ອງ​ຜູ້​ໃຊ້ ​ເພື່ອ​ປະ​ໂຫຍ​ດ​ໃນ​ການກວ​ດສອບ​ ​ແລະ ຕິດຕາມ​ການ​ເຮັດ​ວຽກ​ຂອງ​ຜູ້​ໃຊ້ ​ໂດຍ​ບຣາວ​ເຊີ​ຈະ​ສົ່ງ​ຂໍ້​ມູນ​ຂອງ​ຜູ້​ໃຊ້ມາ​ຍັງ​ເຊີ​ບ​ເວີ ​ແລະ ນຳ​ເອົາຄຸກ​ກີ້​ດັ່ງກ່າວ​ມາ​ເກັບ​ໄວ້​ໃນ​ຕົວ​ປ່ຽນ​ເຮັດ​ໃຫ້​ສາມາດ​ກວດ​ສອບ​ ຄ່າ​ຕ່າງໆ​ຂອງ​ຜູ້​ໃຊ້​ໄດ້. ​ໂດຍ​ມີ​ຟັງ​ຊັນ​ທີ່​ກ່ຽວ​ຂ້ອງ​ດັ່ງ​ນີ້:
10.2.1 ​ຟັງ​ຊັນ setcookie()
ຟັງ​ຊັນ​ນີ້ ​ໃຊ້​ສຳລັບ​ສ້າງ ​ແລະ ທຳລາຍ​ຕົວ​ປ່ຽນ ຄຸກ​ກີ້ ມີ​ຮູບ​ແບບ​ການ​ຂຽນ​ດັ່ງ​ນີ້:

Setcookie(“ຊື່​ຂອງ​ຄຸກ​ກີ້”,“ຄ່າ​ຂອງ​ຄຸກ​ກີ້”,“​ເວລາ​ໝົດ​ອາຍຸ”);

ການ​ສ້າງ​ຕົວ​ປ່ຽນ​ຄຸກ​ກີ້​ໂດຍ​ມີການ​ກຳນົດ​ອາຍຸ​ ​ເມື່ອ​ໝົດ​ເວລາ​ທີ່ກຳນົດ​ແລ້ວ​ຕົວ​ປ່ຽນ​ຄຸກ​ກີ້​ຈະ​ບໍ່​ເກັບ​ຄ່າ​ໃດໆ​ໄວ້.
ການ​ສ້າງ​ຕົວ​ປ່ຽນ​ຄຸກ​ກີ້​ໂດຍ​ບໍ່​ກຳນົດ​ອາຍຸ​ເຮັດ​ໄດ້​ດັ່ງ​ນີ້:
Setcookie(“ຊື່​ຂອງ​ຄຸກ​ກີ້”,“ຄ່າ​ຂອງ​ຄຸກ​ກີ້”);
ການ​ທຳລາຍ​ຕົວ​ປ່ຽນ​ຄຸກ​ກີ້ ​ເມື່ອ​ຕົວ​ປ່ຽນ​​ໃດ​ຖືກ​ທຳລາຍ​ກໍ່​ຈະ​ບໍ່​ເກັບ​ຄ່າ​ໃດໆ​ໄວ້.
Setcookie(“ຊື່​ຂອງ​ຕົວ​ປ່ຽນ”);

ຕົວຢ່າງ5:  ສ້າງ 3 ໜ້າ​ເວັບ​ເພ​ຈດັ່ງ​ຄຳ​ສັ່ງ​ຕໍ່​ໄປ​ນີ້ cookiemake.php,showcookie.php ​ແລະ delcookie.php ຕາມ​ລຳດັບ:
    ສ້າງ ​Cookiemake.php
<?php
setcookie("user","nga",time()+60);
setcookie("pwd","12345",time()+60);
echo "<a href='showcookie.php'> show cookie</a>";
?>
Showcookie.php
<?php
echo "test value of cookie<br>";
echo $user." ".$pwd."<br>";
echo "<a href='delcookie.php'> delete cookie</a>";
?>

    ສ້າງ Delcookie.php
<?php
echo "This page delete cookie";
setcookie("user"); 
setcookie("pwd");
echo "<a href='showcookie.php'> show cookie again</a>";
?>
10.2.2 ຟັງ​ຊັນ ob_start() ​ແລະ ob_end_flush()
ຂໍ້​ຈຳກັດ​ຂອງ​ຟັງ​ຊັນ setcookie() ກໍ່​ຄື​ຫ້າມ​ໃຊ້​ຟັງ​ຊັນ setcookie() ຢູ່​ຫລັງ​ຟັງ​ຊັນ ຫລື ຄຳ​ສັ່ງ​ຕ່າງໆ​ຂອງ PHP ບໍ່​ດັ່ງ​ນັ້ນ​ຈະ​ເກີດ error ທົດ​ສອບ​ຂໍ້​ຜິດພາດ​ດັ່ງ​ກ່າວ​ໂດຍ​ແກ້​ໄຂ​ໂປຣ​ແກຣມ cookiemake.php ​ແລ້ວ​ບັນທຶກ​ເປັນ cookiemake2.php ດັ່ງ​ລຸ່ມ​ນີ້:
<?php
echo "make \$user and \$pwd<br>";
setcookie("user","nga",time()+60);
setcookie("pwd","12345",time()+60);
echo "<a href='showcookie.php'> show cookie</a>";
?>

ຜົນ​ໄດ້​ຮັບ

 ​ການ​ເກີດ error ​ແບບ​ນີ້ຍ້ອນ​ວ່າ ການ​ຮັບ-ສົ່ງ​ຂໍ້​ມູນ​ລະຫວ່າງ ​ເຊີ​ບ​ເວີ ​ແລະ ບຣາວ​ເຊີ ​ເປັນ​ຂໍ້​ມູນ​ໃນ​ສ່ວນ​ຂອງ header ບໍ່​ສາມາດ​ປ່ຽນ​ແປງ​ແກ້​ໄຂ ດັ່ງ​ນັ້ນ​ວິທີ​ແກ້​ໄຂ​ກໍ່​ຄື ຈັດ​ເກັບ​ຂໍ້​ມູນ​ໄວ້​ໃນ​ໜ່ວຍ​ຄວາມ​ຈຳ​ຊົ່ວຄາວ(buffer)ກ່ອນ ​ແລ້ວຈິ່ງ​ສົ່ງ​ໄປ​ໃນ​ຕອນ​ທ້າຍ​ຂອງ​ໂປຣ​ແກຣມ PHP  ​ໂດຍ​ຈະ​ກຳນົດ​ຟັງ​ຊັນ ob_start() ​ເພື່ອ​ເປີດ​ນຳ​​ໃຊ້​ໜ່ວຍຄວາມ​ຈຳ​ຊົ່ວ​ຄາວ ​ແລະ ​ຟັງ​ຊັນ ob_end_flush() ​ເພື່ອ​ປິດ​ການ​ໃຊ້​ໜ່ວຍ​ຄວາມ​ສຳ​ຊົ່ວ​ຄາວ ດັ່ງ​ຕົວຢ່າງ​ຄຳ​ສັ່ງ​ລຸ່ມ​ນີ້:
<?php
ob_start();
echo "make \$user and \$pwd<br>";
setcookie("user","nga",time()+60);
setcookie("pwd","12345",time()+60);
echo "<a href='showcookie.php'> show cookie</a>";
ob_end_flush();
?>