1
2 ในการใช้งานเว็บไซต์ โดยปกติเราจะไม่สามารถ ใช้งานตัวแปรที่มีลักษณะ Global ที่สามารถ นำไปใช้ได้กับเว็บเพจหน้าอื่นๆ ปกติในการใช้ งานค่าต่างๆ ของเว็บเพจ จำเป็นต้องมีการส่ง และรับค่าในลักษณะ GET และ POST จึงจะ สามารถนำข้อมูลมาใช้ได้ แต่มีหลายกรณีที่เราต้องการเก็บรักษาข้อมูล บางอย่างไว้ โดยไม่ต้องส่งและรับค่าแบบ GET หรือ POST เราสามารถใช้ Session Control ใน การรักษาข้อมูลนี้ไว้ได้ จนกว่าผู้ใช้จะปิดหน้า เว็บเพจทั้งหมดของเว็บไซต์นั้นๆ หรือ Timeout
3 คือ ข้อมูลขนาดเล็กที่สคริปต์สามารถเก็บไว้บนเครื่อง Client ได้ ประโยชน์ของการใช้งาน cookie คือใช้เก็บ ข้อมูลเกี่ยวกับผู้ใช้และข้อมูลที่เว็บไซต์ของเราต้องการ โดยเมื่อเรากลับมาที่เว็บไซต์นี้อีกครั้งเว็บไซต์นั้นๆ จะ สามารถอ่าน cookie file เพื่อทำการเตรียมความพร้อม เกี่ยวกับข้อมูลผู้ใช้ ตัวอย่างเช่น เว็บของ hotmail ที่ เมื่อนิสิตกลับเข้ามาโดยไม่ได้ Sign Out จะมี Username เดิมปรากฏอยู่เป็นต้น
4 setcookie(name, value, expire, path, domain); name หมายถึง ชื่อของ cookie value หมายถึง ค่าของ cookie expire หมายถึง วันที่หมดอายุของ cookie path หมายถึง path directory ที่สามารถเรียกใช้ cookie domain หมายถึง ชื่อของเว็ปเซิร์ปเวอร์ที่สามารถใช้ cookie *** ฟังก์ชั่นนี้ต้องใช้ก่อนแท็กเปิด
5 <?php setcookie("test", "Hello, Cookie", time()+3600); ?> <?php setcookie("test", "Hello, Cookie", time()+3600); ?> กำหนดให้ Cookie มีชื่อว่า test เก็บค่า Hello, Phayao มีระยะเวลา 1 ชั่วโมง หากต้องการลบค่า Cookie สามารถใช้คำสั่ง setcookie() แต่ไม่ต้องใส่ค่า Parameter ให้กับ ฟังก์ชัน
6 <?php if (isset($_COOKIE["ck"])) echo " ยินดีต้อนรับ ". $_COOKIE["ck"]. "! "; else echo "cookie ยังไม่ถูกเซ็ท ! "; ?> <?php if (isset($_COOKIE["ck"])) echo " ยินดีต้อนรับ ". $_COOKIE["ck"]. "! "; else echo "cookie ยังไม่ถูกเซ็ท ! "; ?> เมื่อ cookie ถูกเซ็ทแล้ว สามารถเรียก cookie มาใช้งานได้ เหมือนเป็นตัวแปร ฟังก์ชั่น isset() ตรวจสอบว่า cookie มีการเซ็ท แล้วหรือยัง
7 <?php // set the expiration date to one hour ago setcookie("ck", "", time()-3600); ?> <?php // set the expiration date to one hour ago setcookie("ck", "", time()-3600); ?> ใช้คำสั่ง setcookie() แต่ไม่ต้องใส่ค่า Parameter ให้กับ ฟังก์ชัน
Session เป็นตัวแปรคล้าย คุกกี้ ข้อมูลที่ถูกเก็บในตัวแปร session จะถูกบันทึกเป็นไฟล์ session เช่นเดียวกับไฟล์คุกกี้ แต่ session จะเก็บไฟล์ไว้ ที่ฝั่งเซิร์ฟเวอร์ ความแตกต่างของ Cookie กับ Session คืออายุของตัว แปร อายุของ Cookie ถูกกำหนด ด้วยเวลา อายุของ Session ถูกกำหนดด้วยการ ทำงานของเบราเซอร์
Session เริ่มมีอายุตั้งแต่ถูกประกาศ และจะยังคงมีอยู่ ตราบเท่าที่เบราเซอร์ยังคงเปิดใช้งานอยู่ หมายความว่าตัวแปร session จะหมดอายุเมื่อเบรา เซอร์ถูกปิด และต้องเป็นการปิดทุกหน้าต่างด้วย ( ทั้งที่ เกี่ยวข้องและไม่เกี่ยวข้อง )
เอาข้อมูลของผู้ใช้ไปเก็บไว้ที่ฝั่งเซิร์ฟเวอร์ไว้ทำไม ??? เพราะปัญหาของผู้ใช้ที่คิดว่า cookie ไปละเมิดสิทธิส่วน บุคคล จึงทำให้เบราเซอร์ต่างๆ ต้องให้ผู้ใช้สามารถเลือก ได้ว่าจะอนุญาตให้ใช้คุกกี้ได้หรือไม่ ถ้าผู้ใช้กำหนดไม่ยอมรับคุกกี้ ตัวแปรคุกกี้ก็ไม่มีสิทธิ์ไป สร้างไฟล์ไว้ได้ ดังนั้นมันจึงเกิดปัญหา หากว่าเรา ต้องการเก็บค่าข้อมูลเพื่อใช้ได้หลายๆ ครั้ง ก็จะลำบาก session น่าจะเป็นคำตอบของเรื่องนี้
การประกาศตัวแปร session จะใช้ฟังก์ชัน ตัวอย่าง $_SESSION[“name”]; name เป็นชื่อตัวแปร session ที่เราต้องประกาศ ส่วนค่าที่คืนออกมาจากฟังก์ชัน เป็น boolean เพื่อบอกว่าสำเร็จหรือไม่ * ฟังก์ชันนี้ใช้สำหรับประกาศตัวแปร session เพียงหนึ่งตัวเท่านั้น
หลังจากประกาศตัวแปร session แล้วสามารถเรียกใช้ตัว แปร session ได้ทันทีภายในสคริปต์ที่มีการประกาศตัว แปร session การเรียกใช้งานตัวแปร session ต้องมีการประกาศฟังก์ชัน session_start() ไว้ก่อนที่จะใช้ตัวแปร session เพื่อบอก ให้ตัวแปร PHP ทราบว่าเรากำลังจะเรียกใช้ตัวแปร session แล้ว
13 <?php // ตัวอย่างการเรียกใช้งาน SESSION session_start(); $_SESSION['data'] = "Hello, Session" ; echo $_SESSION['data']; ?> <?php // ตัวอย่างการเรียกใช้งาน SESSION session_start(); $_SESSION['data'] = "Hello, Session" ; echo $_SESSION['data']; ?>
14 <?php // ตัวอย่างการยกเลิกการใช้งาน SESSION session_start(); $_SESSION['data'] = "Hello, Session" ; echo $_SESSION['data']; unset($_SESSION['data']); // ยกเลิกการใช้งาน $_SESSION session_destroy(); // ทำลายตัวแปร $_SESSION ทั้งหมด ?> <?php // ตัวอย่างการยกเลิกการใช้งาน SESSION session_start(); $_SESSION['data'] = "Hello, Session" ; echo $_SESSION['data']; unset($_SESSION['data']); // ยกเลิกการใช้งาน $_SESSION session_destroy(); // ทำลายตัวแปร $_SESSION ทั้งหมด ?>
15 unset($_SESSION['views']); ฟังก์ชั่น unset() ถูกใช้ลบตัวแปร sessions บางตัว เท่านั้น session_destroy(); ฟังก์ชั่น session_destroy() ถูกใช้ลบตัวแปร sessions ทั้งหมด
16 login.php check_login.php mainmenu.php Authorized User Hacker
17ชื่อฟิลด์ชนิดคำอธิบาย USERNAME (PK) VARCHAR(20) ชื่อผู้ใช้งาน ระบบ PASSWORD VARCHAR(40) รหัสผ่าน
18 Login.php Username: Password:
19 <?php require_once("connect_inc.php"); session_start(); // start using session $username = $_POST['username']; $password = $_POST['passwd']; Mysql_select_db($dbname); $sql = "SELECT * FROM login WHERE USERNAME= ‘$username’ AND PASSWORD= ‘$password’ "; $result = mysql_query($sql); $login_rows = mysql_num_rows($result); มีต่อ
20 if($login_rows!=0 ){ $_SESSION[“IS_LOGIN”] = “OK”; $URL = "mainmenu.php"; header("Location: $URL"); } else{ $URL = "login.php"; header("Location: $URL"); } ?>
21 <?php session_start(); if($_SESSION["IS_LOGIN"] != "OK"){// Unauthorized user $URL = "login.php"; header("Location: $URL"); } // if login complete you can show menu echo "MAIN MENU DETAIL";?>