ในบทความนี้สอนสร้างระบบการลงทะเบียนและเข้าสู่ระบบอย่างง่ายโดยใช้ PHP และ MySQL

ขั้นตอนที่ 1: สร้างตารางฐานข้อมูล

ชื่อฐานข้อมูล registration

ชื่อตาราง users

กำหนด

id (int10) A_I

username (varchar255)

email (varchar255)

password (varchar255)

ขั้นตอนที่ 2: สร้างไฟล์สำหรับเชื่อมต่อฐานข้อมูล

หลังจากสร้างตารางเราต้องสร้าง PHP เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูล MySQL ลองสร้างไฟล์ชื่อ “server.php” นำโค้ดเหล่านี้ไว้ข้างใน

<?php
error_reporting(E_ALL ^ E_NOTICE);
session_start();

// กำหนดค่าว่าง
$username = "";
$email = "";
$errors = array();

//ตั้งค่าฐานข้อมูล
$db_server_name = "localhost";
$db_username = "root";
$db_password = "";
$db_name = "registration";

//connect to db เชื่อมต่อฐานข้อมูล
$db = mysqli_connect($db_server_name, $db_username, $db_password, $db_name) or die("Could not connect to database");
?>

ขั้นตอนที่ 3: สร้างแบบฟอร์มลงทะเบียน สมัครสมาชิก

ลองสร้างไฟล์ PHP อีกไฟล์ “register.php” และใส่โค้ดตัวอย่างต่อไปนี้ลงไป

<?php include('server.php');
include('action.php'); ?>
<!DOCTYPE html>
<html>
<head>
  <title>Registration system PHP and MySQL</title>
</head>
<body>
  <div class="header">
  	<h2>Register</h2>
  </div>
	
  <form method="post" action="register.php">
  	<p><?php include('errors.php'); ?></p>
  	<div class="input-group">
  	  <label>Username</label>
  	  <input type="text" name="username" value="<?php echo $username; ?>">
  	</div>
  	<div class="input-group">
  	  <label>Email</label>
  	  <input type="email" name="email" value="<?php echo $email; ?>">
  	</div>
  	<div class="input-group">
  	  <label>Password</label>
  	  <input type="password" name="password_1">
  	</div>
  	<div class="input-group">
  	  <label>Confirm password</label>
  	  <input type="password" name="password_2">
  	</div>
  	<div class="input-group">
  	  <button type="submit" class="btn" name="reg_user">Register</button>
  	</div>
  	<p>
  		Already a member? <a href="login.php">Sign in</a>
  	</p>
  </form>
</body>
</html>

ขั้นตอนที่ 4: สร้างแบบฟอร์มเข้าสู่ระบบ

ลองสร้างไฟล์ชื่อ “login.php” และวาง Code ต่อไปนี้ไว้ภายใน

<?php include('server.php');
include('action.php'); ?>
<!DOCTYPE html>
<html>
<head>
  <title>Registration system PHP and MySQL</title>
</head>
<body>
  <div class="header">
  	<h2>Login</h2>
  </div>
	 
  <form method="post" action="login.php">
  	<p><?php include('errors.php'); ?></p>
  	<div class="input-group">
  		<label>Username</label>
  		<input type="text" name="username" >
  	</div>
  	<div class="input-group">
  		<label>Password</label>
  		<input type="password" name="password">
  	</div>
  	<div class="input-group">
  		<button type="submit" class="btn" name="login_user">Login</button>
  	</div>
  	<p>
  		Not yet a member? <a href="register.php">Sign up</a>
  	</p>
  </form>
</body>
</html>

ขั้นตอนที่ 5: การสร้างหน้าแรก index.php

<?php 
include('./include/server.php');
  session_start(); 

  if (!isset($_SESSION['username'])) {
  	$_SESSION['msg'] = "You must log in first";
  	header('location: login.php');
  }
  if (isset($_GET['logout'])) {
  	session_destroy();
  	unset($_SESSION['username']);
  	header("location: login.php");
  }
?>
<!DOCTYPE html>
<html>
<head>
	<title>Home</title>
</head>
<body>

<div class="header">
	<h2>Home Page</h2>
</div>
<div class="content">
  	<!-- notification message -->
  	<?php if (isset($_SESSION['success'])) : ?>
      <div class="error success" >
      	<h3>
          <?php 
          	echo $_SESSION['success']; 
          	unset($_SESSION['success']);
          ?>
      	</h3>
      </div>
  	<?php endif ?>

    <!-- logged in user information -->
    <?php  if (isset($_SESSION['username'])) : ?>
    	<p>Welcome <strong><?php echo $_SESSION['username']; ?></strong></p>
    	<p> <a href="index.php?logout" style="color: red;">logout</a> </p>
    <?php endif ?>
</div>
		
</body>
</html>

ขั้นตอนที่ 6: สร้าง action.php

สำหรับการตรวจสอบและเพิ่มข้อมูลลงฐานข้อมูล

<?php
include('server.php');

// ระบบลงทะเบียน
if (isset($_POST['reg_user'])) {
  // receive all input values from the form
  $username = mysqli_real_escape_string($db, $_POST['username']);
  $email = mysqli_real_escape_string($db, $_POST['email']);
  $password_1 = mysqli_real_escape_string($db, $_POST['password_1']);
  $password_2 = mysqli_real_escape_string($db, $_POST['password_2']);

  // form validation: ensure that the form is correctly filled ...
  // by adding (array_push()) corresponding error unto $errors array
  if (empty($username)) { array_push($errors, "Username is required"); }
  if (empty($email)) { array_push($errors, "Email is required"); }
  if (empty($password_1)) { array_push($errors, "Password is required"); }
  if ($password_1 != $password_2) {
	array_push($errors, "The two passwords do not match");
  }

  // first check the database to make sure 
  // a user does not already exist with the same username and/or email
  $user_check_query = "SELECT * FROM users WHERE username='$username' OR email='$email' LIMIT 1";
  $result = mysqli_query($db, $user_check_query);
  $user = mysqli_fetch_assoc($result);
  
  if ($user) { // if user exists
    if ($user['username'] === $username) {
      array_push($errors, "Username already exists");
    }

    if ($user['email'] === $email) {
      array_push($errors, "email already exists");
    }
  }

  // Finally, register user if there are no errors in the form
  if (count($errors) == 0) {
  	$password = md5($password_1);//encrypt the password before saving in the database

  	$query = "INSERT INTO users (username, email, password) 
  			  VALUES('$username', '$email', '$password')";
  	mysqli_query($db, $query);
  	$_SESSION['username'] = $username;
  	$_SESSION['success'] = "You are now logged in";
  	header('location: index.php');
  }
}
// ระบบล็อกอิน
if (isset($_POST['login_user'])) {
    $username = mysqli_real_escape_string($db, $_POST['username']);
    $password = mysqli_real_escape_string($db, $_POST['password']);
  
    if (empty($username)) {
        array_push($errors, "Username is required");
    }
    if (empty($password)) {
        array_push($errors, "Password is required");
    }
  
    if (count($errors) == 0) {
        $password = md5($password);
        $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
        $results = mysqli_query($db, $query);
        if (mysqli_num_rows($results) == 1) {
          $_SESSION['username'] = $username;
          $_SESSION['success'] = "You are now logged in";
          header('location: index.php');
        }else {
            array_push($errors, "Wrong username/password combination");
        }
    }
  }
?>

ขั้นตอนที่ 7: สร้าง errors.php

สำหรับโชว์ข้อความผิดพลาดต่างๆ

<?php  if (count($errors) > 0) : ?>
  	<?php foreach ($errors as $error) : ?>
  	  <?php echo $error ?>
  	<?php endforeach ?>
<?php  endif ?>

เป็นเพียงหน้าเว็บธรรมดาให้เพื่อนๆนำไปต่อยอดตกแต่งลง css เพิ่มได้ตามความต้องการ
โค้ดนำมาจากเว็บ https://github.com/