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

กลับมาอีกครั้งแล้วครับสำหรับบทความเกี่ยวกับเรื่องของการสร้างระบบ Login ด้วย php และเชื่อมต่อฐานข้อมูล mysql ถือว่าเป็นเรื่องที่ประสบความสำเร็จสูงมากๆในเว็บของผมเอง เลยขอมาต่อยอดอีกครั้งด้วยการ สร้างระบบ login แบบกำหนดหรือแบ่งสถานะของผู้เข้าใช้งาน

login

login

ใครที่เพิ่งเคยเข้ามาตรงนี้เป็นครั้งแรกยังไม่มีความรู้เรื่องของ การสร้างระบบ login มาก่อนแนะนำให้ลองไปอ่านบทความเรื่อง

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

– สร้างระบบ Login ด้วย PHP+MySQL

มาเริ่มกันเลยนะครับ เพื่อไม่ให้เป็นการเสียเวลา

Step 1.
อันดับแรกคุณจะต้องเตรียมฐานข้อมูลขึ้นมาก่อนครับ ซึ่งตรงนี้ผมทำการสร้างตัวอย่างขึ้นมาให้ดูแล้วนะครับ

table_user

table_user

อันนี้เป็นตัวอย่างของการสร้างตารางฐานข้อมูลสำหรับผู้ใช้อ่ะนะครับ อาจจะไม่ถูกต้องตามโครงสร้าง การออกแบบฐานข้อมูลอ่ะนะ แต่คิดว่าเพียงพอต่อการเรียนรู้ระบบของเรา งั้นมาต่อกันที่ อะไรบ้างที่เป็นจุดสำคัญสำหรับเรา ผมทำลูกศรสีแดงชี้ไปให้เห็นแล้วนะครับ ในรูป ซึ่งมีดังนี้

  1. Login_user = ชื่อของผู้ใช้งานที่เราจะเอามาตรวจสอบสำหรับการเข้าสู่ระบบ
  2. Pw_user      = รหัสผ่านที่จะเข้าไปสู่ระบบซึ่งต้องตรวจสอบเช่นกัน
  3. status_user  = ตรงนี้เป็นส่วนสำคัญที่เราจะเอาไว้สำหรับส่งผู้ใช้แต่ละคนไปยังส่วนต่างๆของเค้า

Step 2.
ทีนี้พอเราได้ฐานข้อมูลแล้ว เราก็มาสร้างกล่องสำหรับ login กันครับ ผมจะตั้งชื่อไฟล์นี้ว่า index.php ก็แล้วกัน

<form action="check_login.php" method="post">
<div id="loginbox">
Username : <input type="text" name="username" size="20" /><br />
Password : <input type="password" name="password" size="20" /><br />
<input type="submit" value=" Log in " />
</div>
</form>

– บรรทัดแรกผมสร้าง Tag Form เพื่อส่งข้อมูลไปยังหน้า check_login.php แบบ post
– บรรทัดต่อมาเปิด Tag div เพื่อวางข้อมูลของกล่องโดยตั้งชื่อว่า loginbox
– บรรทัดต่อมาสร้างกล่องรับข้อความใช้ชื่อว่า username
– บรรทัดต่อมาสร้างกล่องรับข้อความใช้ชื่อว่า password
– บรรทัดต่อมาสร้างปุ่มสำหรับ submit ข้อมูล

Step 3.
มาดูส่วนของการตรวจสอบข้อมูลเพื่อการ login กันครับ ผมตั้งชื่อไฟล์ว่า check_login.php

<?php
session_start(); //เปิด seesion เพื่อทำงาน
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
//กำหนดภาษาของเอกสารให้เป็น UTF-8
$username = $_POST[username];
//ประกาศซตัวแปรชื่อ username โดยการรับค่ามาจากกล่อง username ที่หน้า Login
$password = $_POST[password];
//ประกาศซตัวแปรชื่อ password โดยการรับค่ามาจากกล่อง password ที่หน้า Login
if($username == "") {                    //ถ้ายังไม่ได้กรอกข้อมูลที่ชื่อผู้ใช้ให้ทำงานดังต่อไปนี้
echo "คุณยังไม่ได้กรอกชื่อผู้ใช้ครับ";
} else if($password == "") {        //ถ้ายังไม่ได้กรอกรหัสผ่านให้ทำงานดังต่อไปนี้
echo "คุณยังไม่ได้กรอกรหัสผ่านครับ";
} else {                                               //ถ้ากรอกข้อมูลทั้งหมดแล้วให้ทำงานดังนี้
include("connect.php");           //เรียก function สำหรับติดต่อฐานข้อมูลจากหน้า connect.php ขึ้นมา
$check_log =
mysql_query("select * from user where Login_user ='$username' and Pw_user ='$password' ");                           //ใช้ภาษา SQL ตรวจสอบข้อมูลในฐานข้อมูล
$num = mysql_num_rows($check_log);
//ให้เอาค่าที่ได้ออกมาประกาศเป็นตัวแปรชื่อ $num
if($num <=0) {                                                           //ถ้าหากค่าที่ได้ออกมามีค่าต่ำกว่า 1
echo "Username หรือ Password อาจจะผิดกรุณา Login ใหม่อีกครั้ง <br /><a href='index.php'>Back</a>";
} else {
while ($data = mysql_fetch_array($check_log) ) {
//ถ้าค่ามีมากกว่า 0 ขึ้นไป ให้ดึงข้อมูลออกมาทั้งหมด
if($data[status_user]==admin){                          //ตรวจสอบสถานะของผู้ใช้ว่าเป็น Admin
echo "Hi Welcome Back Admin<br />";             //สร้าง session สำหรับให้ admin นำค่าไปใช้งาน
$_SESSION[ses_userid] = session_id();            //สร้าง session สำหรับเก็บค่า ID
$_SESSION[ses_username] = $username;      //สร้าง session สำหรับเก็บค่า Username
$_SESSION[ses_status] = "admin";                      //สร้าง session สำหรับเก็บค่า สถานะความเป็น Admin
echo "<meta http-equiv='refresh' content='1;URL=index_admin.php'>";
//ส่งค่าจากหน้านี้ไปหน้า index_admin.php
echo "waiting..............................";
}elseif($data[status_user]==user){                              //ตรวจสอบสถานะของผู้ใช้งานว่าเป็น user
$_SESSION[ses_userid] = session_id();                      //สร้าง session สำหรับให้ User นำไปใช้งาน
$_SESSION[ses_username] = $username;
$_SESSION[ses_status] = "user";
echo "<meta http-equiv='refresh' content='1;URL=index_user.php'>";
//ส่งค่าจากหน้านี้ไปหน้า index_user.php
echo "<br /> Waiting User..............................";
}else{
echo "You Are Boss";
$_SESSION[ses_userid] = session_id();
$_SESSION[ses_username] = $username;
$_SESSION[ses_status] = "boss";
echo "<meta http-equiv='refresh' content='1;URL=index_boss.php'>";
echo "<br /> Waiting Boss..............................";
}
}
}
}
?>

ตรงนี้ Code ยาวมากเลยผมเลยเขียน comment ไว้ด้านบนระหว่างบรรทัดแทนเลย รบกวนย้อนขึ้นไปอ่านนะครับ แต่จะอธิบายเพิ่มเติมอีกนิด คือ บรรทัด $check_log = mysql_query(“select * from user where Login_user =’$username’ and Pw_user =’$password’ “);  นี่ผมดึงข้อมูลออกมาทั้งหมดจากฐานข้อมูลเรียกว่าเอามาหมดมันทุก colum เลยทีนี้เวลาเอาไปตรวจสอบเราจะเอามานับแค่ชื่อและรหัสผ่านว่ามีไหม  จากนั้นผมทำการเก็บค่า สถานะขึ้นมาด้วยการ ดึงค่าออกมา

while ($data = mysql_fetch_array($check_log) ) {
if($data[status_user]==admin)

ซึ่งตรงบรรทัด if ผมได้ดึงค่าสถานะของผู้ที่เข้ามาสู่ระบบว่ามีสถานะอะไรแล้วหากว่าเป็น admin ก็เข้าไปทำงานต่อในส่วนนี้ ถ้าไม่ใช่ไปอีกส่วนหนึ่ง ซึ่งจะเป็น Code ดังนี้

elseif($data[status_user]==user)

ตรงนี้สำหรับคนที่มีสถานะเป็นผู้ใช้งานทั่วไป User

และหากไม่ใช่ทั้ง 2 สถานะนี้ก็ให้ไปทำงานที่ส่วนสุดท้าย ซึ่งตรงนี้ผมวางไว้เป็นผู้บริหารแค่นั้นเองครับทั้งหมดก็จะมี 3 ส่วน

Step 4.
ตอนนี้มาถึงเรื่องการตรวจสอบครับว่าคุณมีสิทธิที่จะเข้าใช้ส่วนนี้ไหม ผมขอตั้งชื่อตามนี้นะครับ
1. index_admin.php สำหรับผู้ดูแลระบบ

<?php
session_start(); //เปิด session
$ses_userid =$_SESSION[ses_userid];                                          //สร้าง session สำหรับเก็บค่า ID
$ses_username = $_SESSION[ses_username];                          //สร้าง session สำหรับเก็บค่า username
//ตรวจสอบว่าทำการ Login เข้าสู่ระบบมารึยัง
if($ses_userid <> session_id() or $ses_username ==""){
echo "Please Login to system<br />";
}

//ตรวจสอบสถานะว่าใช่ admin รึเปล่า ถ้าไม่ใช่ให้หยุดอยู่แค่นี้
if($_SESSION[ses_status] != "admin") {
echo "This page for Admin only!";
echo "<a href=index.php>Back</a>";
exit();
}
?>

2.index_user.php ไฟล์สำหรับผู้ใช้งานทั่วไปเขียนเหมือนกันแค่เปลี่ยนตรง ses_status != admin เป็น user
3.index_boss.php ไฟล์สำหรับผู้บริหารเขียนเหมือนกันแค่เปลี่ยนตรง ses_status != admin เป็น boss

Step 5.
สุดท้ายเป็นเรื่องของการล้างค่าเพื่อทำการออกจากระบบครับ ไฟล์ชื่อ logout.php

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

ตรงนี้เป็นการทำลายค่า session ที่เคยเก็บไว้ทั้งหมด แค่นี้ก็เรียบร้อยแล้วนะครับสำหรับระบบ login แบบเก็บค่าบน session แล้วยังเอามาแบ่งสถานะผู้ใช้งานอีก สามารถนำไฟล์ของระบบ login แบบใช้ session มาดัดแปลงเพิ่มเติมได้เลยนะครับไม่ยากครับ

ลืมเรื่องของไฟล์ connect.php สำหรับเชื่อมต่อฐานข้อมูลครับเลยเอามาเติมให้เต็ม

<?php
$con = mysql_connect("localhost","root","root"); //ประกาศตัวแปรชื่อ con เก็บค่าการเชื่อมต่อฐานข้อมูล ผ่านทาง localhost ชื่อผู้ใช้ root รหัสผ่าน root
mysql_select_db("user",$con); // เลือกฐานข้อมูลในระบบ DB เป็น user แล้วสั่งเชื่อมต่อฐานข้อมูล
mysql_query("SET NAMES utf8"); // สั่งการเชื่อมต่อฐานข้อมูลเป็นภาษา UTF8
?>

ผมเพิ่มเติมในส่วนของ Video มาให้นะครับสำหรับใครที่ยังไม่ค่อยเข้าใจผมอธิบายเพิ่มเติมให้ในตัว video นะครับ

ขอบคุณที่ติดตามนะครับ

 

 

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

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