สร้างระบบ Login ด้วย PHP+MySQL แบบใช้ Session

หลังจากที่บทความเรื่อง สร้างระบบ login ด้วย PHP+MYSQL มีผู้เข้ามาชมอย่างมากมายสูงที่สุดในเว็บวันนี้ผมเลยทำระบบ login แบบเดิมแต่เพิ่มเติมความสามารถด้วยการใช้งาน SESSION ขึ้นมาด้วย ซึ่่งเรื่องนี้จะมีความยาวมากกว่าบทก่อนนะครับ เพราะจะใช้ไฟล์ทั้งหมด 4 ไฟล์ในการทำความเข้าใจเรื่องนี้กัน

Session คืออะไร?
มันคือ หมายเลขประจำตัว ที่ Web Server ส่งมายัง Client ค่า Session จะไม่มีทางซ้ำกัน Session ID มีประโยชน์ใรการอ้างอิงเกี่ยวกับการใช้งานของ Client ซึ่งผมจะยังไม่ลงรายละเอียดของเรื่อง Session นะครับ

แต่ผมว่าเรามาเริ่มต้นกันเลยแล้วกันครับ

ไฟล์แรก index.php

<form action=”login.php” method=”post”>
username<br /><input type=”text” name=”username” /><br />
password<br /><input type=”password” name=”password” /><br />
<input type=”submit” />
</form>

ผมสร้าง form สำหรับการ Login เข้ามาก่อน ส่งค่าไปที่หน้า login.php ใช้ Method แบบ Post มี Element username กับ password

ไฟล์ต่อไป login.php

<?php
session_start();
?>

เริ่มต้นบรรทัดบนสุดต้องเปิด Session ก่อนเพราะอยู่ในส่วนของ Header นะครับ
จากนั้น

<body>
<?php
$username = $_POST[username];
$password = $_POST[password];
$con    =    mysql_connect(“localhost”,”root”,”root”);
if(!$con) {    echo “Not connect”; }
mysql_select_db(“base”,$con);
mysql_query(“SET NAMES tis620”);
$result = mysql_query(“select * from user where username =’$username’  and password=’$password’ “);
$num = mysql_num_rows($result);
if($num <=0) {
echo “ไม่พบชื่อผู้ใช้นี้ในฐานข้อมูล”;
}    else {
$_SESSION[ses_userid] = session_id();
$_SESSION[ses_username] = $username;
echo “<meta http-equiv=’refresh’ content=’2;URL=index2.php’ />”;
while ($data = mysql_fetch_array($result) ) {
echo $data[username],”<br />”;
echo $data[lastname],”<br />”;;
}
}
?>
</body>

ตรงนี้ค่อนข้างยาวหน่อยนะครับ เริ่มจากประกาศตัวแปรชื่อ username และ password เพื่อรับค่าจากหน้าที่แล้ว
บรรทัดต่อมาผมสร้างตัวแปร $con เพื่อเชื่อมต่อกับฐานข้อมูล
บรรทัดต่อมาผมใช้ IF ดัก Error ของการเชื่อมต่อฐานข้อมูลเอาไว้ก่อน
ส่วนปรรทัดนี้ mysql_select_db(“base”,$con); ผมเลือกใช้ฐานข้อมูล base
บรรทัด mysql_query(“SET NAMES tis620”); เป็นการสั่งให้ใ้ช้งานภาษาไทยได้
บรรทัดต่อไปผมใช้ SQL สั่งงานฐานข้อมูลโดยเลือกทั้งหมดจากตาราง user  ซึ่ง username จะต้อง มีค่าเท่ากับ
‘$username’ และ password ต้องเท่ากับ ‘$password’ ด้วยเหมือนกัน
จากนั้นผมสั่งให้นับผลลัพธ์ที่ได้ออกมา ถ้าผลลัพธ์ออกมามีค่าเท่ากับ 0 ให้แสดงข้อความว่า “ไม่พบชื่อผู้ใช้นี้ในฐานข้อมูล”
แต่ถ้ามีมากกว่า 0 ให้ทำงานต่อไปนี้
$_SESSION[ses_userid] = session_id(); หมายถึง การประกาศตัวแปร session ชื่อ ses_userid มีค่าเท่ากับ ID ของผู้ใช้ที่
server สร้างขึ้นมา
$_SESSION[ses_username] = $username; หมายถึง การประกาศตัวแปร session ชื่อ ses_username มีค่าเท่ากับตัวแปร
ชื่อ username
แล้วก็ให้ส่งเราไปยังหน้า Index2 ต่อไป

ไฟล์ index2.php

<?php
session_start();
$ses_userid =$_SESSION[ses_userid];
$ses_username = $_SESSION[ses_username];
if($ses_userid <> session_id() or  $ses_username ==””){
echo “คุณยังไม่ได้ทำการ Log in”;
echo “<meta http-equiv=’refresh’ content=’2;URL=index.php’ />”;
}    else {
?>
<?php
$con    =    mysql_connect(“localhost”,”root”,”root”);
if(!$con) {    echo “Not connect”; }
mysql_select_db(“base”,$con);
mysql_query(“SET NAMES tis620”);
$result = mysql_query(“select * from user where username =’$_SESSION[ses_username]’ “);
while ($data = mysql_fetch_array($result) ) {
echo $data[username],”<br />”;
echo $data[lastname],”<br />”;
}
?>
<a href=”logout.php”>Log out</a>
</body>
</html>
<?php
}
?>

เริ่มต้นด้วย session_start(); เช่นเดิมครับ
จากนั้นทำการตรวจสอบว่ามี session ที่ระบุไหม if($ses_userid <> session_id() or  $ses_username ==””)
ถ้าไม่มี session นี้ให้ส่งกลับไปที่หน้าแรก
จากนั้นผมก็ทำการเชื่อมต่อกับฐานข้อมูลอีกครั้ง
$result = mysql_query(“select * from user where username =’$_SESSION[ses_username]’ “);
เลือกทั้งหมดจากฐานข้อมูล user ต่อเมื่อ username มีค่าเท่ากับ  $_SESSION[ses_username]’
ถ้ามีข้อมูลอยู่ก็ให้ วนลูปออกมาแสดงผลด้วย while

while ($data = mysql_fetch_array($result) ) {
echo $data[username],”<br />”;
echo $data[lastname],”<br />”;
}

สุดท้ายผมทำ link เพื่อส่งไปที่หน้า Log out ครับ

ไฟล์  logout.php

<?php
session_start();
unset ( $_SESSION[‘ses_userid’] );
unset ( $_SESSION[‘ses_username’] );
session_destroy();
?>

เริ่มต้นด้วย session_start(); เหมือนเดิมนะครับ
จากนั้นก็ระบุ unset ให้กับ session ทุกตัว
แล้วก็ใช้ session_destroy(); เพื่อทำลายค่า session ครับ

เท่านี้ก็เป็นอันจบเอาเป็นว่าผมมีไฟล์ตัวอย่างมาฝากให้ลองทำความเข้าใจดูเพิ่่มเติมด้วยนะครับ
Download

waraluk.com รับสกรีนเสื้อยืด โปโล กระเป๋าผ้า

waraluk.com รับสกรีนเสื้อยืด โปโล กระเป๋าผ้า

บทความใกล้เคียง

สร้าง Form login โดยซ่อนข้อความ javascript

ระบบ login php แบบเก็บค่า Cookie

สร้างระบบ Login ด้วย PHP+MySQL แบบแบ่งสถานะผู้ใช้