การจัดการกับตัวแปร Session |
Session คือ ตัวแปรที่สร้างขึ้นมาเพื่อให้สามารถใช้งานได้ทั้งเว็บไซต์ ไม่ว่าเราจะเปิดไปหน้าไหน ก็ตาม ก็สามารถเรียกใช้งานตัวแปร นั้นๆ ได้
หลักการทำงานของ session หน้า เว็บเพจที่มีการเรียกใช้งาน Session_start(); เมื่อ เว็บเซิร์ฟเวอร์ อ่านพบจะ ทำการระบุโคดหมายเลขประจำ ขึ้นมาให้กับ browser ซึ่งจะถูกเข้ารหัสในรูปแบบของ MD5 เราเรียก id นี้ว่า sessionid แต่ละเครื่อง ก็จะไม่มีทาง ซ้ำกันได้เลย
เมื่อ client ได้ตัว sessionid แล้ว เราก็สามารถอ้างอิงค่า session ไปยังหน้าเว็บเพจ จนกว่า client จะปิดหน้าต่าง browser
เริ่มต้นการใช้งาน session |
ในการทำงานทุกครั้งที่เกี่ยวกับ Session เราจะต้อง ประกาศฟังชั่น Session_start(); ก่อนเสมอ เพื่อเป็นการเริ่มต้นใช้งาน session และ ต้องวางไว้ตำแหน่งบนสุดของ page หากไม่ได้ประกาศ session_start(); ไว้บนสุดจะขึ้นข้อความ error
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at D:\!@nuijang\course\php_programming\CD_training\source_study\session_01.php:2) in D:\!@nuijang\course\php_programming\CD_training\source_study\session_01.php on line 3
ฟังชั่นที่เกี่ยวกับ session
หากเราต้องการสร้างตัวแปร session เราจะต้องสร้างโดยการใช้ ฟังชั่นดังนี้
session_register(str ชื่อตัวแปร) = เป็นการลงทะเบียนตัวแปร session
session_unregister( str ชื่อตัวแปร) = เป็นการ ลบ session ตัวนั้นๆ ออก
session_destroy(); = เป็นการทำลายตัวแปร session ทิ้งทั้งหมด
$_SESSION[“ชื่อ session”]; = ตัวแปร super global สำหรับรับค่า session
การสร้างฟอร์ม login โดยใช้ session |
การทำงาน จะเป็นดังนี้คือ
1. สร้างไฟล์ session_login01.php เป็นฟอร์ม สำหรับกรอก username และ password
2. สร้างไฟล์ session_login02.php เป็นไฟล์ที่ตรวจสอบการ login ว่า login ถูกต้องหรือไม่ หากถูกต้องให้ ทำการ register session username และไปยังหน้า session_login03 หากไม่ถูกต้องให้ register error เพื่อแสดงสถานะกลับไปย้งหน้า session_login01
3. สร้างไฟล์ session_login03.php เพื่อแสดงข้อความยินดีต้อนรับพร้อมกับเรียกใช้ตัวแปร session แสดงชื่อผู้ที่ login
Example : session_login01.php
<?php
session_start();
session_unregister("username");
echo $_SESSION["err"];
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
</head>
<body>
<form action="session_login02.php" method="post">
<table width="100%" border="0" cellpadding="2" cellspacing="1" bgcolor="#CCCCCC">
<tr bgcolor="#CCCCCC">
<td colspan="2">กรอกข้อมูล</td>
</tr>
<tr bgcolor="#E5E5E5">
<td width="25%">username</td>
<td width="75%"><input name="txtuser" type="text" id="txtuser"></td>
</tr>
<tr bgcolor="#E5E5E5">
<td>password</td>
<td><input name="txtpass" type="text" id="txtpass"></td>
</tr>
<tr bgcolor="#E5E5E5">
<td> </td>
<td><input type="submit" name="cmdsubmit" value="Submit">
<input type="reset" name="cmdreset" value="Reset"></td>
</tr>
</table>
</form>
</body>
</html>
Example : session_login02.php
<?php
session_start();
$admin_user="admin";
$admin_pass="123";
$submit=$_POST["cmdsubmit"];
if (isset($submit)) {
$txtuser=$_POST["txtuser"];
$txtpass=$_POST["txtpass"];
if ($txtuser==$admin_user and $txtpass==$admin_pass) {
session_unregister("err");
$username=$txtuser; // สร้างตัวแปร username ไว้สำหรับเก็บค่า txtuser
session_register("username"); // สร้างตัวแปร session ชื่อ username
header("Location:session_login03.php"); // redirect ไปยังหน้า page 3
}else{
$err = "<font color=\"#ff0000\">Login ไม่ ถูกต้อง กรุณา login ใหม่</font>";
session_register("err");
header("Location:session_login01.php");
}
}
?>
Example : session_login03.php
<?php
session_start();
echo "<h3>Welcome To ".$_SESSION["username"]."</h3>";
?>
ไม่มีความคิดเห็น:
แสดงความคิดเห็น