สวัสดีครับ ในบทความนี้จะแจกตัวอย่างโค้ดระบบ Login – Logout ตรวจสอบสิทธิ์การใช้งานหน้าเว็บ แบบง่ายๆ โดยเขียนในรูปแบบ PHP PDO รองรับการทำงาน PHP7 และ PHP8 สำหรับเอาไปศึกษาและพัฒนาต่อยอดครับ *ฝึกไว้ครับเผื่อได้ใช้
รวมคลิปสอนปรับพื้นฐาน ภาษา php ฟรี 100 คลิป ++ https://devbanban.com/?p=3940
โค้ดประกอบด้วย
- PHP PDO
- SESSION
- CONDITION
- Login – Logout
- ตรวจสอบสิทธิ์การเข้าใช้งานตามหน้าเว็บที่กำหนด
- MySQL
- HTML
- Bootstrap5
- Sweet Alert
มาเริ่มทำ workshop กันครับ *คอมเม้นอยู่ในโค้ด
0.รวม Workshop PHP PDO ก่อนหน้า คลิก
1.Workshop ระบบสมัครสมาชิก (ต่อเนื่องกัน) คลิก **ไปทำ workshop นี้ก่อนครับ
2.สร้างโฟลเดอร์สำหรับทดสอบ เช่น ชื่อโฟลเดอร์ workshop_pdo *สำหรับคนที่เพิ่งฝึกยังไม่เข้าใจข้อนี้ว่าต้องสร้างไว้ที่ไหน ให้ดูคลิปชุดนี้ก่อน รวมคลิปสอนปรับพื้นฐาน ภาษา php ฟรี 100 คลิป ++ https://devbanban.com/?p=3940
3.ไฟล์เชื่อมต่อฐานข้อมูล ชื่อไฟล์ connect.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $servername = "localhost"; $username = "root"; $password = "yourpassword"; //ไม่ได้ตั้งรหัสผ่านก็ลบ yourpassword ออก try { $conn = new PDO("mysql:host=$servername;dbname=workshop_pdo", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } //Set ว/ด/ป เวลา ให้เป็นของประเทศไทย date_default_timezone_set('Asia/Bangkok'); ?> |
4.ตารางที่ใช้เก็บข้อมูลสมาชิก เอาได้จาก workshop ระบบสมัครสมาชิก คลิก
5.ฟอร์มล็อคอิน login.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
<?php session_start();?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"> <title>Basic Login PHP PDO by devbanban.com 2021</title> </head> <body> <div class="container"> <div class="row"> <div class="col-md-3"></div> <div class="col-md-8"> <br> <h4>PHP PDO Basic :: ระบบ Login</h4> <form action="" method="post"> <div class="mb-2"> <div class="col-sm-9"> <input type="text" name="username" class="form-control" required minlength="3" placeholder="username"> </div> </div> <div class="mb-3"> <div class="col-sm-9"> <input type="password" name="password" class="form-control" required minlength="3" placeholder="password"> </div> </div> <div class="d-grid gap-2 col-sm-9 mb-3"> <button type="submit" class="btn btn-primary">Login</button> </div> </form> </div> </div> </div> <center>คอร์สออนไลน์ <a href="https://devbanban.com/?cat=250" target="_blank"> คลิก </a> </center> </body> </html> <?php //print_r($_POST); //ตรวจสอบมี input อะไรบ้าง และส่งอะไรมาบ้าง //ถ้ามีค่าส่งมาจากฟอร์ม if(isset($_POST['username']) && isset($_POST['password']) ){ // sweet alert echo ' <script src="https://code.jquery.com/jquery-2.1.3.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert-dev.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.css">'; //ไฟล์เชื่อมต่อฐานข้อมูล require_once 'connect.php'; //ประกาศตัวแปรรับค่าจากฟอร์ม $username = $_POST['username']; $password = sha1($_POST['password']); //เก็บรหัสผ่านในรูปแบบ sha1 //check username & password $stmt = $conn->prepare("SELECT id, name, surname FROM tbl_member WHERE username = :username AND password = :password"); $stmt->bindParam(':username', $username , PDO::PARAM_STR); $stmt->bindParam(':password', $password , PDO::PARAM_STR); $stmt->execute(); //กรอก username & password ถูกต้อง if($stmt->rowCount() == 1){ //fetch เพื่อเรียกคอลัมภ์ที่ต้องการไปสร้างตัวแปร session $row = $stmt->fetch(PDO::FETCH_ASSOC); //สร้างตัวแปร session $_SESSION['id'] = $row['id']; $_SESSION['name'] = $row['name']; $_SESSION['surname'] = $row['surname']; //เช็คว่ามีตัวแปร session อะไรบ้าง //print_r($_SESSION); // exit(); header('Location: main.php'); //login ถูกต้องและกระโดดไปหน้าตามที่ต้องการ }else{ //ถ้า username or password ไม่ถูกต้อง echo '<script> setTimeout(function() { swal({ title: "เกิดข้อผิดพลาด", text: "Username หรือ Password ไม่ถูกต้อง ลองใหม่อีกครั้ง", type: "warning" }, function() { window.location = "login.php"; //หน้าที่ต้องการให้กระโดดไป }); }, 1000); </script>'; $conn = null; //close connect db } //else } //isset //devbanban.com ?> |
6.ไฟล์ที่ผ่านการตรวจสอบสิทธิ์ (กรอก Username & Password ถูกต้อง) main.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
<?php session_start(); echo ' <script src="https://code.jquery.com/jquery-2.1.3.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert-dev.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.css">'; //เช็คว่ามีตัวแปร session อะไรบ้าง //print_r($_SESSION); //exit(); //สร้างเงื่อนไขตรวจสอบสิทธิ์การเข้าใช้งานจาก session if(empty($_SESSION['id']) && empty($_SESSION['name']) && empty($_SESSION['surname'])){ echo '<script> setTimeout(function() { swal({ title: "คุณไม่มีสิทธิ์ใช้งานหน้านี้", type: "error" }, function() { window.location = "login.php"; //หน้าที่ต้องการให้กระโดดไป }); }, 1000); </script>'; exit(); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"> <title>Basic Login PHP PDO by devbanban.com 2021</title> </head> <body> <div class="container"> <div class="row"> <div class="col-md-12"> <br> <h3>Backend</h3> </div> <div class="col-md-3"> <div class="list-group"> <a href="#" class="list-group-item list-group-item-action active" aria-current="true"> The current link item </a> <a href="#" class="list-group-item list-group-item-action">A second link item</a> <a href="#" class="list-group-item list-group-item-action">A third link item</a> <a href="#" class="list-group-item list-group-item-action">A fourth link item</a> <a href="logout.php" class="list-group-item list-group-item-danger" onclick="return confirm('ยืนยันการออกจากระบบ');">ออกจากระบบ</a> </div> </div> <div class="col-md-9"> <h1 class="text-center">Main Content</h1> <h5 class="text-center">สวัสดีคุณ <?= $_SESSION['name'].' '.$_SESSION['surname'];?></h5> </div> </div> </div> <center>Basic Login PHP PDO by devbanban.com 2021</center> </body> </html> |
7.ไฟล์ล็อคเอ้าหรือออกจากระบบ logout.php
1 2 3 4 5 6 |
<?php session_start(); //ประกาศใช้ session session_destroy(); //เคลียร์ค่า session header('Location: login.php'); //Logout เรียบร้อยและกระโดดไปหน้าตามที่ต้องการ //devbanban.com ?> |
8.ผลการทำงาน
ลองเอาไปประยุกต์ใช้ดูครับ และฝากติดตาม workshop ต่อๆ ไปด้วยครับผม
แหล่งศึกษาเพิ่มเติม : https://websitebeaver.com/php-pdo-vs-mysqli
List of PDOStatement::bindParam data_type parameters : https://www.php.net/manual/en/pdo.constants.php
ขอแนะนำระบบพร้อมใช้งาน *รายละเอียดและราคาอยู่ใต้คลิป
ระบบพร้อมใช้ทั้งหมด คลิก
ร่วมสนับสนุน ค่ากาแฟ ค่าโฮส devbanban.com ได้ที่
ธนาคารกรุงไทย สาขาเดอะมอลล์ท่าพระ
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 878-0-17747-6
————————————————————————————
ธนาคารไทยพาณิชย์ สาขามหาวิทยาลัยราชภัฏธนบุรี
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 406-359094-1
fanpage : https://www.facebook.com/sornwebsites/