Mã nguồn bảng điều khiển quản trị viên PHP

FusionPBX là một PBX nhiều bên thuê và chuyển đổi giọng nói cho FreeSWITCH, một nền tảng giao tiếp đa nền tảng, đa luồng, có khả năng mở rộng cao. FusionPBX có thể được sử dụng như một tổng đài đơn hoặc dựa trên miền và cung cấp một số chức năng. như công tắc cấp nhà cung cấp dịch vụ, máy chủ trung tâm cuộc gọi, máy chủ thư thoại, máy chủ fax, máy chủ hội nghị, máy chủ VoIP, khung thiết bị nhiều bên thuê và hơn thế nữa. Nó cũng cung cấp tiện ích mở rộng không giới hạn, cung cấp thiết bị, giữ nhạc, dừng cuộc gọi, cuộc gọi tự động

Đây là một hệ thống quản lý nội dung web hoàn toàn tuyệt vời cho các blog/bài viết. Nó cho phép bạn dễ dàng quản lý trang web hoặc blog của mình mà không cần phải hối hả nhiều. Với hệ thống này, bạn sẽ điều hành blog của mình như một ông chủ. Nó cung cấp cho bạn nhiều khả năng để tùy chỉnh blog của bạn để phù hợp với nhu cầu của bạn. Nó có các tính năng tuyệt vời và bạn không cần phải chạm vào bất kỳ mã nào để blog của bạn hoạt động. Có

Chào mừng bạn đến với hướng dẫn về cách tạo bảng quản trị PHP đơn giản. Vì bạn đang đọc điều này, tôi sẽ cho rằng bạn quan tâm đến việc “tăng sức mạnh” cho dự án hiện có của mình và muốn xây dựng một thành phần quản trị cho dự án đó. Vì vậy, đây là chia sẻ của riêng tôi – Tất cả được thực hiện bằng HTML, CSS, Javascript và PHP thuần túy. Không có khuôn khổ của bên thứ ba. đọc tiếp

ⓘ Tôi đã bao gồm một tệp zip chứa tất cả mã nguồn khi bắt đầu hướng dẫn này, vì vậy bạn không cần phải sao chép-dán mọi thứ… Hoặc nếu bạn chỉ muốn đi sâu vào

 

 

MỤC LỤC

 

TẢI XUỐNG & LƯU Ý

Đầu tiên, đây là liên kết tải xuống mã nguồn như đã hứa

 

GHI CHÚ NHANH

  • Tạo cơ sở dữ liệu và nhập 1-users.sql
  • Mở 2-lib-admin.php, thay đổi cài đặt cơ sở dữ liệu của riêng bạn
  • Truy cập 3a-login.php. Người dùng mặc định là john@doe. com và mật khẩu là 123456 .
Nếu bạn phát hiện ra một lỗi, hãy bình luận bên dưới. Tôi cũng cố gắng trả lời các câu hỏi ngắn, nhưng đó là một người so với cả thế giới… Nếu bạn cần câu trả lời gấp, vui lòng xem danh sách các trang web của tôi để được trợ giúp về lập trình

 

ẢNH CHỤP MÀN HÌNH

Được rồi, bây giờ chúng ta hãy đi vào chi tiết cách tạo một bảng quản trị đơn giản với PHP và MySQL

 

PHẦN 1) CƠ SỞ DỮ LIỆU NGƯỜI DÙNG

1 người dùng. sql

-- (A) USERS TABLE
CREATE TABLE `users` (
  `user_id` bigint(20) NOT NULL,
  `user_email` varchar(255) NOT NULL,
  `user_name` varchar(255) NOT NULL,
  `user_password` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE `users`
  ADD PRIMARY KEY (`user_id`),
  ADD UNIQUE KEY `user_email` (`user_email`),
  ADD KEY `user_name` (`user_name`);

ALTER TABLE `users`
  MODIFY `user_id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;

-- (B) DEFAULT USER
-- EMAIL: [email protected] | PASSWORD: 123456
INSERT INTO `users` (`user_id`, `user_email`, `user_name`, `user_password`) VALUES
(1, '[email protected]', 'John Doe', '$2y$10$vZJy7y4uqQQTRN3zdi2RE.5ZJJzGEEPnzEjFXm4nEOx023XQ2Qe..');

Trước tiên, chúng ta hãy bắt đầu bằng cách xử lý điều hiển nhiên - Cơ sở dữ liệu để chứa người dùng quản trị

  • user_id Khóa chính và tự động tăng
  • pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET,
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      }
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - RUN SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
    
      // (D) GET USER BY ID OR EMAIL
      function get ($id) {
        $this->query(sprintf("SELECT * FROM `users` WHERE `%s`=?",
          is_numeric($id) ? "user_id" : "user_email"
        ), [$id]);
        return $this->stmt->fetch();
      }
    
      // (E) SAVE USER
      function save ($name, $email, $password, $id=null) {
        // (E1) SQL & DATA
        $sql = $id==null
          ? "INSERT INTO `users` (`user_name`, `user_email`, `user_password`) VALUES (?,?,?)"
          : "UPDATE `users` SET `user_name`=?, `user_email`=?, `user_password`=? WHERE `user_id`=?" ;
        $data = [$name, $email, password_hash($password, PASSWORD_DEFAULT)];
        if ($id!=null) { $data[] = $id; }
    
        // (E2) RUN SQL
        $this->query($sql, $data);
        return true;
      }
    
      // (F) VERIFICATION
      function verify ($email, $password) {
        // (F1) GET USER
        $user = $this->get($email);
        $pass = is_array($user);
    
        // (F2) CHECK PASSWORD
        if ($pass) { $pass = password_verify($password, $user["user_password"]); }
    
        // (F3) REGISTER MEMBER INTO SESSION
        if ($pass) {
          foreach ($user as $k=>$v) { $_SESSION["admin"][$k] = $v; }
          unset($_SESSION["admin"]["user_password"]);
        }
    
        // (F4) RESULT
        if (!$pass) { $this->error = "Invalid email/password"; }
        return $pass;
      }
    }
    
    // (G) DATABASE SETTINGS - CHANGE TO YOUR OWN
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8mb4");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
    
    // (H) START!
    session_start();
    $_ADM = new Admin();
    0 Email người dùng, duy nhất để tránh trùng lặp
  • pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET,
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      }
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - RUN SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
    
      // (D) GET USER BY ID OR EMAIL
      function get ($id) {
        $this->query(sprintf("SELECT * FROM `users` WHERE `%s`=?",
          is_numeric($id) ? "user_id" : "user_email"
        ), [$id]);
        return $this->stmt->fetch();
      }
    
      // (E) SAVE USER
      function save ($name, $email, $password, $id=null) {
        // (E1) SQL & DATA
        $sql = $id==null
          ? "INSERT INTO `users` (`user_name`, `user_email`, `user_password`) VALUES (?,?,?)"
          : "UPDATE `users` SET `user_name`=?, `user_email`=?, `user_password`=? WHERE `user_id`=?" ;
        $data = [$name, $email, password_hash($password, PASSWORD_DEFAULT)];
        if ($id!=null) { $data[] = $id; }
    
        // (E2) RUN SQL
        $this->query($sql, $data);
        return true;
      }
    
      // (F) VERIFICATION
      function verify ($email, $password) {
        // (F1) GET USER
        $user = $this->get($email);
        $pass = is_array($user);
    
        // (F2) CHECK PASSWORD
        if ($pass) { $pass = password_verify($password, $user["user_password"]); }
    
        // (F3) REGISTER MEMBER INTO SESSION
        if ($pass) {
          foreach ($user as $k=>$v) { $_SESSION["admin"][$k] = $v; }
          unset($_SESSION["admin"]["user_password"]);
        }
    
        // (F4) RESULT
        if (!$pass) { $this->error = "Invalid email/password"; }
        return $pass;
      }
    }
    
    // (G) DATABASE SETTINGS - CHANGE TO YOUR OWN
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8mb4");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
    
    // (H) START!
    session_start();
    $_ADM = new Admin();
    1 Tên người dùng
  • pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET,
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      }
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - RUN SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
    
      // (D) GET USER BY ID OR EMAIL
      function get ($id) {
        $this->query(sprintf("SELECT * FROM `users` WHERE `%s`=?",
          is_numeric($id) ? "user_id" : "user_email"
        ), [$id]);
        return $this->stmt->fetch();
      }
    
      // (E) SAVE USER
      function save ($name, $email, $password, $id=null) {
        // (E1) SQL & DATA
        $sql = $id==null
          ? "INSERT INTO `users` (`user_name`, `user_email`, `user_password`) VALUES (?,?,?)"
          : "UPDATE `users` SET `user_name`=?, `user_email`=?, `user_password`=? WHERE `user_id`=?" ;
        $data = [$name, $email, password_hash($password, PASSWORD_DEFAULT)];
        if ($id!=null) { $data[] = $id; }
    
        // (E2) RUN SQL
        $this->query($sql, $data);
        return true;
      }
    
      // (F) VERIFICATION
      function verify ($email, $password) {
        // (F1) GET USER
        $user = $this->get($email);
        $pass = is_array($user);
    
        // (F2) CHECK PASSWORD
        if ($pass) { $pass = password_verify($password, $user["user_password"]); }
    
        // (F3) REGISTER MEMBER INTO SESSION
        if ($pass) {
          foreach ($user as $k=>$v) { $_SESSION["admin"][$k] = $v; }
          unset($_SESSION["admin"]["user_password"]);
        }
    
        // (F4) RESULT
        if (!$pass) { $this->error = "Invalid email/password"; }
        return $pass;
      }
    }
    
    // (G) DATABASE SETTINGS - CHANGE TO YOUR OWN
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8mb4");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
    
    // (H) START!
    session_start();
    $_ADM = new Admin();
    2 Mật khẩu của người dùng

 

 

PHẦN 2) THƯ VIỆN QUẢN TRỊ PHP

2-lib-admin. php

pdo = new PDO(
      "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET,
      DB_USER, DB_PASSWORD, [
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
  }

  // (B) DESTRUCTOR - CLOSE CONNECTION
  function __destruct () {
    if ($this->stmt !== null) { $this->stmt = null; }
    if ($this->pdo !== null) { $this->pdo = null; }
  }

  // (C) HELPER FUNCTION - RUN SQL QUERY
  function query ($sql, $data=null) {
    $this->stmt = $this->pdo->prepare($sql);
    $this->stmt->execute($data);
  }

  // (D) GET USER BY ID OR EMAIL
  function get ($id) {
    $this->query(sprintf("SELECT * FROM `users` WHERE `%s`=?",
      is_numeric($id) ? "user_id" : "user_email"
    ), [$id]);
    return $this->stmt->fetch();
  }

  // (E) SAVE USER
  function save ($name, $email, $password, $id=null) {
    // (E1) SQL & DATA
    $sql = $id==null
      ? "INSERT INTO `users` (`user_name`, `user_email`, `user_password`) VALUES (?,?,?)"
      : "UPDATE `users` SET `user_name`=?, `user_email`=?, `user_password`=? WHERE `user_id`=?" ;
    $data = [$name, $email, password_hash($password, PASSWORD_DEFAULT)];
    if ($id!=null) { $data[] = $id; }

    // (E2) RUN SQL
    $this->query($sql, $data);
    return true;
  }

  // (F) VERIFICATION
  function verify ($email, $password) {
    // (F1) GET USER
    $user = $this->get($email);
    $pass = is_array($user);

    // (F2) CHECK PASSWORD
    if ($pass) { $pass = password_verify($password, $user["user_password"]); }

    // (F3) REGISTER MEMBER INTO SESSION
    if ($pass) {
      foreach ($user as $k=>$v) { $_SESSION["admin"][$k] = $v; }
      unset($_SESSION["admin"]["user_password"]);
    }

    // (F4) RESULT
    if (!$pass) { $this->error = "Invalid email/password"; }
    return $pass;
  }
}

// (G) DATABASE SETTINGS - CHANGE TO YOUR OWN
define("DB_HOST", "localhost");
define("DB_NAME", "test");
define("DB_CHARSET", "utf8mb4");
define("DB_USER", "root");
define("DB_PASSWORD", "");

// (H) START!
session_start();
$_ADM = new Admin();

Thư viện cơ sở dữ liệu và cốt lõi PHP này ở đây để giúp các bạn phát triển nhanh hơn một chút. Thoạt nhìn có thể khó hiểu, nhưng hãy bình tĩnh và quan sát kỹ

  • (A, B, H) Khi
    pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET,
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      }
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - RUN SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
    
      // (D) GET USER BY ID OR EMAIL
      function get ($id) {
        $this->query(sprintf("SELECT * FROM `users` WHERE `%s`=?",
          is_numeric($id) ? "user_id" : "user_email"
        ), [$id]);
        return $this->stmt->fetch();
      }
    
      // (E) SAVE USER
      function save ($name, $email, $password, $id=null) {
        // (E1) SQL & DATA
        $sql = $id==null
          ? "INSERT INTO `users` (`user_name`, `user_email`, `user_password`) VALUES (?,?,?)"
          : "UPDATE `users` SET `user_name`=?, `user_email`=?, `user_password`=? WHERE `user_id`=?" ;
        $data = [$name, $email, password_hash($password, PASSWORD_DEFAULT)];
        if ($id!=null) { $data[] = $id; }
    
        // (E2) RUN SQL
        $this->query($sql, $data);
        return true;
      }
    
      // (F) VERIFICATION
      function verify ($email, $password) {
        // (F1) GET USER
        $user = $this->get($email);
        $pass = is_array($user);
    
        // (F2) CHECK PASSWORD
        if ($pass) { $pass = password_verify($password, $user["user_password"]); }
    
        // (F3) REGISTER MEMBER INTO SESSION
        if ($pass) {
          foreach ($user as $k=>$v) { $_SESSION["admin"][$k] = $v; }
          unset($_SESSION["admin"]["user_password"]);
        }
    
        // (F4) RESULT
        if (!$pass) { $this->error = "Invalid email/password"; }
        return $pass;
      }
    }
    
    // (G) DATABASE SETTINGS - CHANGE TO YOUR OWN
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8mb4");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
    
    // (H) START!
    session_start();
    $_ADM = new Admin();
    3 được tạo, hàm tạo sẽ kết nối với cơ sở dữ liệu. Hàm hủy đóng kết nối
  • (C)
    pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET,
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      }
    
      // (B) DESTRUCTOR - CLOSE CONNECTION
      function __destruct () {
        if ($this->stmt !== null) { $this->stmt = null; }
        if ($this->pdo !== null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - RUN SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
    
      // (D) GET USER BY ID OR EMAIL
      function get ($id) {
        $this->query(sprintf("SELECT * FROM `users` WHERE `%s`=?",
          is_numeric($id) ? "user_id" : "user_email"
        ), [$id]);
        return $this->stmt->fetch();
      }
    
      // (E) SAVE USER
      function save ($name, $email, $password, $id=null) {
        // (E1) SQL & DATA
        $sql = $id==null
          ? "INSERT INTO `users` (`user_name`, `user_email`, `user_password`) VALUES (?,?,?)"
          : "UPDATE `users` SET `user_name`=?, `user_email`=?, `user_password`=? WHERE `user_id`=?" ;
        $data = [$name, $email, password_hash($password, PASSWORD_DEFAULT)];
        if ($id!=null) { $data[] = $id; }
    
        // (E2) RUN SQL
        $this->query($sql, $data);
        return true;
      }
    
      // (F) VERIFICATION
      function verify ($email, $password) {
        // (F1) GET USER
        $user = $this->get($email);
        $pass = is_array($user);
    
        // (F2) CHECK PASSWORD
        if ($pass) { $pass = password_verify($password, $user["user_password"]); }
    
        // (F3) REGISTER MEMBER INTO SESSION
        if ($pass) {
          foreach ($user as $k=>$v) { $_SESSION["admin"][$k] = $v; }
          unset($_SESSION["admin"]["user_password"]);
        }
    
        // (F4) RESULT
        if (!$pass) { $this->error = "Invalid email/password"; }
        return $pass;
      }
    }
    
    // (G) DATABASE SETTINGS - CHANGE TO YOUR OWN
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8mb4");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
    
    // (H) START!
    session_start();
    $_ADM = new Admin();
    4 Hàm trợ giúp để thực hiện truy vấn SQL
  • (D đến F) Các chức năng quản trị thực tế
    • pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET,
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        }
      
        // (B) DESTRUCTOR - CLOSE CONNECTION
        function __destruct () {
          if ($this->stmt !== null) { $this->stmt = null; }
          if ($this->pdo !== null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - RUN SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
      
        // (D) GET USER BY ID OR EMAIL
        function get ($id) {
          $this->query(sprintf("SELECT * FROM `users` WHERE `%s`=?",
            is_numeric($id) ? "user_id" : "user_email"
          ), [$id]);
          return $this->stmt->fetch();
        }
      
        // (E) SAVE USER
        function save ($name, $email, $password, $id=null) {
          // (E1) SQL & DATA
          $sql = $id==null
            ? "INSERT INTO `users` (`user_name`, `user_email`, `user_password`) VALUES (?,?,?)"
            : "UPDATE `users` SET `user_name`=?, `user_email`=?, `user_password`=? WHERE `user_id`=?" ;
          $data = [$name, $email, password_hash($password, PASSWORD_DEFAULT)];
          if ($id!=null) { $data[] = $id; }
      
          // (E2) RUN SQL
          $this->query($sql, $data);
          return true;
        }
      
        // (F) VERIFICATION
        function verify ($email, $password) {
          // (F1) GET USER
          $user = $this->get($email);
          $pass = is_array($user);
      
          // (F2) CHECK PASSWORD
          if ($pass) { $pass = password_verify($password, $user["user_password"]); }
      
          // (F3) REGISTER MEMBER INTO SESSION
          if ($pass) {
            foreach ($user as $k=>$v) { $_SESSION["admin"][$k] = $v; }
            unset($_SESSION["admin"]["user_password"]);
          }
      
          // (F4) RESULT
          if (!$pass) { $this->error = "Invalid email/password"; }
          return $pass;
        }
      }
      
      // (G) DATABASE SETTINGS - CHANGE TO YOUR OWN
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8mb4");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
      
      // (H) START!
      session_start();
      $_ADM = new Admin();
      5 Nhận người dùng bằng ID hoặc email
    • pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET,
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        }
      
        // (B) DESTRUCTOR - CLOSE CONNECTION
        function __destruct () {
          if ($this->stmt !== null) { $this->stmt = null; }
          if ($this->pdo !== null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - RUN SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
      
        // (D) GET USER BY ID OR EMAIL
        function get ($id) {
          $this->query(sprintf("SELECT * FROM `users` WHERE `%s`=?",
            is_numeric($id) ? "user_id" : "user_email"
          ), [$id]);
          return $this->stmt->fetch();
        }
      
        // (E) SAVE USER
        function save ($name, $email, $password, $id=null) {
          // (E1) SQL & DATA
          $sql = $id==null
            ? "INSERT INTO `users` (`user_name`, `user_email`, `user_password`) VALUES (?,?,?)"
            : "UPDATE `users` SET `user_name`=?, `user_email`=?, `user_password`=? WHERE `user_id`=?" ;
          $data = [$name, $email, password_hash($password, PASSWORD_DEFAULT)];
          if ($id!=null) { $data[] = $id; }
      
          // (E2) RUN SQL
          $this->query($sql, $data);
          return true;
        }
      
        // (F) VERIFICATION
        function verify ($email, $password) {
          // (F1) GET USER
          $user = $this->get($email);
          $pass = is_array($user);
      
          // (F2) CHECK PASSWORD
          if ($pass) { $pass = password_verify($password, $user["user_password"]); }
      
          // (F3) REGISTER MEMBER INTO SESSION
          if ($pass) {
            foreach ($user as $k=>$v) { $_SESSION["admin"][$k] = $v; }
            unset($_SESSION["admin"]["user_password"]);
          }
      
          // (F4) RESULT
          if (!$pass) { $this->error = "Invalid email/password"; }
          return $pass;
        }
      }
      
      // (G) DATABASE SETTINGS - CHANGE TO YOUR OWN
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8mb4");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
      
      // (H) START!
      session_start();
      $_ADM = new Admin();
      6 Thêm hoặc cập nhật người dùng
    • pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET,
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        }
      
        // (B) DESTRUCTOR - CLOSE CONNECTION
        function __destruct () {
          if ($this->stmt !== null) { $this->stmt = null; }
          if ($this->pdo !== null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - RUN SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
      
        // (D) GET USER BY ID OR EMAIL
        function get ($id) {
          $this->query(sprintf("SELECT * FROM `users` WHERE `%s`=?",
            is_numeric($id) ? "user_id" : "user_email"
          ), [$id]);
          return $this->stmt->fetch();
        }
      
        // (E) SAVE USER
        function save ($name, $email, $password, $id=null) {
          // (E1) SQL & DATA
          $sql = $id==null
            ? "INSERT INTO `users` (`user_name`, `user_email`, `user_password`) VALUES (?,?,?)"
            : "UPDATE `users` SET `user_name`=?, `user_email`=?, `user_password`=? WHERE `user_id`=?" ;
          $data = [$name, $email, password_hash($password, PASSWORD_DEFAULT)];
          if ($id!=null) { $data[] = $id; }
      
          // (E2) RUN SQL
          $this->query($sql, $data);
          return true;
        }
      
        // (F) VERIFICATION
        function verify ($email, $password) {
          // (F1) GET USER
          $user = $this->get($email);
          $pass = is_array($user);
      
          // (F2) CHECK PASSWORD
          if ($pass) { $pass = password_verify($password, $user["user_password"]); }
      
          // (F3) REGISTER MEMBER INTO SESSION
          if ($pass) {
            foreach ($user as $k=>$v) { $_SESSION["admin"][$k] = $v; }
            unset($_SESSION["admin"]["user_password"]);
          }
      
          // (F4) RESULT
          if (!$pass) { $this->error = "Invalid email/password"; }
          return $pass;
        }
      }
      
      // (G) DATABASE SETTINGS - CHANGE TO YOUR OWN
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8mb4");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
      
      // (H) START!
      session_start();
      $_ADM = new Admin();
      7 Xác minh email và mật khẩu đã cung cấp. Đăng ký người dùng vào
      pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET,
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        }
      
        // (B) DESTRUCTOR - CLOSE CONNECTION
        function __destruct () {
          if ($this->stmt !== null) { $this->stmt = null; }
          if ($this->pdo !== null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - RUN SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
      
        // (D) GET USER BY ID OR EMAIL
        function get ($id) {
          $this->query(sprintf("SELECT * FROM `users` WHERE `%s`=?",
            is_numeric($id) ? "user_id" : "user_email"
          ), [$id]);
          return $this->stmt->fetch();
        }
      
        // (E) SAVE USER
        function save ($name, $email, $password, $id=null) {
          // (E1) SQL & DATA
          $sql = $id==null
            ? "INSERT INTO `users` (`user_name`, `user_email`, `user_password`) VALUES (?,?,?)"
            : "UPDATE `users` SET `user_name`=?, `user_email`=?, `user_password`=? WHERE `user_id`=?" ;
          $data = [$name, $email, password_hash($password, PASSWORD_DEFAULT)];
          if ($id!=null) { $data[] = $id; }
      
          // (E2) RUN SQL
          $this->query($sql, $data);
          return true;
        }
      
        // (F) VERIFICATION
        function verify ($email, $password) {
          // (F1) GET USER
          $user = $this->get($email);
          $pass = is_array($user);
      
          // (F2) CHECK PASSWORD
          if ($pass) { $pass = password_verify($password, $user["user_password"]); }
      
          // (F3) REGISTER MEMBER INTO SESSION
          if ($pass) {
            foreach ($user as $k=>$v) { $_SESSION["admin"][$k] = $v; }
            unset($_SESSION["admin"]["user_password"]);
          }
      
          // (F4) RESULT
          if (!$pass) { $this->error = "Invalid email/password"; }
          return $pass;
        }
      }
      
      // (G) DATABASE SETTINGS - CHANGE TO YOUR OWN
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8mb4");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
      
      // (H) START!
      session_start();
      $_ADM = new Admin();
      8
  • (G) Cài đặt cơ sở dữ liệu, hãy nhớ thay đổi chúng thành của riêng bạn
  • (H) Khởi động “động cơ”

 

 

PHẦN 3) TRANG ĐĂNG NHẬP

đăng nhập 3a. php

verify($_POST["email"], $_POST["password"]);
}
 
// (C) REDIRECT IF SIGNED IN
if (isset($_SESSION["admin"])) {
  header("Location: 5-protected.php");
  exit();
} ?>
 

error!="") { echo "
".$_ADM->error."
"; } ?>

ADMIN LOGIN

Đó là tất cả cho phần hướng dẫn, và đây là một số bổ sung nhỏ và liên kết có thể hữu ích cho bạn

 

BẢO MẬT TỐT HƠN HƠN

Bảng quản trị này được tạo ra để đơn giản và không có bảo mật tốt nhất… Tôi khuyên bạn nên thực hiện ít nhất những điều sau đây

  • Tạo một thư mục
    verify($_POST["email"], $_POST["password"]);
    }
     
    // (C) REDIRECT IF SIGNED IN
    if (isset($_SESSION["admin"])) {
      header("Location: 5-protected.php");
      exit();
    } ?>
     
    
    error!="") { echo "
    ".$_ADM->error."
    "; } ?>

    ADMIN LOGIN

    6 mới
  • Đối với người dùng Apache, hãy tạo tệp
    verify($_POST["email"], $_POST["password"]);
    }
     
    // (C) REDIRECT IF SIGNED IN
    if (isset($_SESSION["admin"])) {
      header("Location: 5-protected.php");
      exit();
    } ?>
     
    
    error!="") { echo "
    ".$_ADM->error."
    "; } ?>

    ADMIN LOGIN

    7 với một dòng –
    verify($_POST["email"], $_POST["password"]);
    }
     
    // (C) REDIRECT IF SIGNED IN
    if (isset($_SESSION["admin"])) {
      header("Location: 5-protected.php");
      exit();
    } ?>
     
    
    error!="") { echo "
    ".$_ADM->error."
    "; } ?>

    ADMIN LOGIN

    8. Người dùng không còn có thể truy cập các tệp từ 
    verify($_POST["email"], $_POST["password"]);
    }
     
    // (C) REDIRECT IF SIGNED IN
    if (isset($_SESSION["admin"])) {
      header("Location: 5-protected.php");
      exit();
    } ?>
     
    
    error!="") { echo "
    ".$_ADM->error."
    "; } ?>

    ADMIN LOGIN

    9 đến
    
    
    
    
     
    
    
    0, nhưng PHP vẫn có thể đọc chúng
  • Người dùng IIS và NGINX – Tạo “bản dịch
    
    
    
    
     
    
    
    1” của riêng bạn
  • Chuyển 2-lib-admin.php,
    
    
    
    
     
    
    
    3,
    
    
    
    
     
    
    
    4 thành
    verify($_POST["email"], $_POST["password"]);
    }
     
    // (C) REDIRECT IF SIGNED IN
    if (isset($_SESSION["admin"])) {
      header("Location: 5-protected.php");
      exit();
    } ?>
     
    
    error!="") { echo "
    ".$_ADM->error."
    "; } ?>

    ADMIN LOGIN

    6
  • Tất nhiên, hãy cập nhật đường dẫn tệp trong tập lệnh của bạn cho phù hợp
  • Nhớ xóa 1-users.sql

 

LIÊN KẾT và THAM KHẢO

  • Bảo vệ mã thông báo CSRF – Code Boxx
  • Quản lý vai trò người dùng PHP – Code Boxx
  • Mã hóa PHP Giải mã Xác minh mật khẩu – Code Boxx
  • Bảng quản trị CSS HTML thuần túy rất đơn giản – Code Boxx

 

HƯỚNG DẪN YOUTUBE

 

KẾT THÚC

Cảm ơn bạn đã đọc, và chúng tôi đã đi đến phần cuối của hướng dẫn này. Tôi hy vọng rằng nó đã giúp tăng tốc độ phát triển dự án của bạn và nếu bạn có bất cứ điều gì muốn chia sẻ với hướng dẫn này, vui lòng bình luận bên dưới. Chúc may mắn và mã hóa hạnh phúc