Hệ thống đăng ký đăng nhập PHP MySQL

Hệ thống đăng nhập cho phép người dùng tạo và đăng nhập vào tài khoản của họ để truy cập nội dung trang web. Hệ thống đăng nhập là một tính năng chính cho mọi trang web thành viên. Nếu bạn muốn hạn chế quyền truy cập vào nội dung trang web và chỉ cho phép người dùng đã đăng nhập truy cập nội dung, cần triển khai chức năng đăng nhập người dùng. Hệ thống đăng ký và đăng nhập người dùng có thể được tích hợp dễ dàng với PHP và MySQL. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách xây dựng một hệ thống đăng nhập an toàn với PHP và MySQL

Trong tập lệnh hệ thống đăng nhập PHP này, chúng tôi sẽ triển khai các chức năng sau với PHP và MySQL

  • Đăng ký tạo tài khoản người dùng
  • Xác thực tài khoản người dùng
  • Xác thực người dùng bằng PHP SESSION
  • Chế độ xem tài khoản người dùng

Trước khi bắt đầu xây dựng Hệ thống đăng nhập người dùng bằng PHP, hãy xem cấu trúc tệp

php_login_system_with_mysql/
├── User.class.php
├── userAccount.php
├── index.php
├── registration.php
└── css/
    └── style.css

Tạo bảng cơ sở dữ liệu

Cần có một bảng để lưu trữ chi tiết tài khoản trong cơ sở dữ liệu. SQL sau đây tạo một bảng

CREATE TABLE `users` [
  `id` int[11] NOT NULL AUTO_INCREMENT,
  `first_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
  `last_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar[50] COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar[255] COLLATE utf8_unicode_ci NOT NULL,
  `phone` varchar[15] COLLATE utf8_unicode_ci NOT NULL,
  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,
  `status` tinyint[1] NOT NULL DEFAULT 1 COMMENT '1=Active | 0=Block',
  PRIMARY KEY [`id`]
] ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
0 trong cơ sở dữ liệu MySQL

CREATE TABLE `users` [
  `id` int[11] NOT NULL AUTO_INCREMENT,
  `first_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
  `last_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar[50] COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar[255] COLLATE utf8_unicode_ci NOT NULL,
  `phone` varchar[15] COLLATE utf8_unicode_ci NOT NULL,
  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,
  `status` tinyint[1] NOT NULL DEFAULT 1 COMMENT '1=Active | 0=Block',
  PRIMARY KEY [`id`]
] ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Lớp người dùng [Người dùng. lớp. php]

Lớp người dùng xử lý tất cả các hoạt động liên quan đến cơ sở dữ liệu [Kết nối, Tìm nạp và Chèn] với PHP và MySQL

  • Lúc đầu, chỉ định máy chủ cơ sở dữ liệu [
    CREATE TABLE `users` [
      `id` int[11] NOT NULL AUTO_INCREMENT,
      `first_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
      `last_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
      `email` varchar[50] COLLATE utf8_unicode_ci NOT NULL,
      `password` varchar[255] COLLATE utf8_unicode_ci NOT NULL,
      `phone` varchar[15] COLLATE utf8_unicode_ci NOT NULL,
      `created` datetime NOT NULL,
      `modified` datetime NOT NULL,
      `status` tinyint[1] NOT NULL DEFAULT 1 COMMENT '1=Active | 0=Block',
      PRIMARY KEY [`id`]
    ] ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    1], tên người dùng [
    CREATE TABLE `users` [
      `id` int[11] NOT NULL AUTO_INCREMENT,
      `first_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
      `last_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
      `email` varchar[50] COLLATE utf8_unicode_ci NOT NULL,
      `password` varchar[255] COLLATE utf8_unicode_ci NOT NULL,
      `phone` varchar[15] COLLATE utf8_unicode_ci NOT NULL,
      `created` datetime NOT NULL,
      `modified` datetime NOT NULL,
      `status` tinyint[1] NOT NULL DEFAULT 1 COMMENT '1=Active | 0=Block',
      PRIMARY KEY [`id`]
    ] ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    2], mật khẩu [
    CREATE TABLE `users` [
      `id` int[11] NOT NULL AUTO_INCREMENT,
      `first_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
      `last_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
      `email` varchar[50] COLLATE utf8_unicode_ci NOT NULL,
      `password` varchar[255] COLLATE utf8_unicode_ci NOT NULL,
      `phone` varchar[15] COLLATE utf8_unicode_ci NOT NULL,
      `created` datetime NOT NULL,
      `modified` datetime NOT NULL,
      `status` tinyint[1] NOT NULL DEFAULT 1 COMMENT '1=Active | 0=Block',
      PRIMARY KEY [`id`]
    ] ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    3] và tên [
    CREATE TABLE `users` [
      `id` int[11] NOT NULL AUTO_INCREMENT,
      `first_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
      `last_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
      `email` varchar[50] COLLATE utf8_unicode_ci NOT NULL,
      `password` varchar[255] COLLATE utf8_unicode_ci NOT NULL,
      `phone` varchar[15] COLLATE utf8_unicode_ci NOT NULL,
      `created` datetime NOT NULL,
      `modified` datetime NOT NULL,
      `status` tinyint[1] NOT NULL DEFAULT 1 COMMENT '1=Active | 0=Block',
      PRIMARY KEY [`id`]
    ] ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    4] theo thông tin đăng nhập cơ sở dữ liệu MySQL
  • __construct[] – Kết nối cơ sở dữ liệu bằng thông tin đăng nhập MySQL đã chỉ định
  • getRows[] – Lấy các bản ghi từ cơ sở dữ liệu dựa trên các điều kiện
  • insert[] – Chèn dữ liệu vào cơ sở dữ liệu
/*
 * User Class
 * This class is used for database related [connect fetch, and insert] operations
 * @author    CodexWorld.com
 * @url       //www.codexworld.com
 * @license   //www.codexworld.com/license
 */
class User{
    private $dbHost     = "localhost";
    private $dbUsername = "root";
    private $dbPassword = "root";
    private $dbName     = "codexworld";
    private $userTbl    = "users";

    public function __construct[]{
        if[!isset[$this->db]]{
            // Connect to the database
            $conn = new mysqli[$this->dbHost, $this->dbUsername, $this->dbPassword, $this->dbName];
            if[$conn->connect_error]{
                die["Failed to connect with MySQL: " . $conn->connect_error];
            }else{
                $this->db = $conn;
            }
        }
    }

    /*
     * Returns rows from the database based on the conditions
     * @param string name of the table
     * @param array select, where, order_by, limit and return_type conditions
     */
    public function getRows[$conditions = array[]]{
        $sql = 'SELECT ';
        $sql .= array_key_exists["select",$conditions]?$conditions['select']:'*';
        $sql .= ' FROM '.$this->userTbl;
        if[array_key_exists["where",$conditions]]{
            $sql .= ' WHERE ';
            $i = 0;
            foreach[$conditions['where'] as $key => $value]{
                $pre = [$i > 0]?' AND ':'';
                $sql .= $pre.$key." = '".$value."'";
                $i++;
            }
        }

        if[array_key_exists["order_by",$conditions]]{
            $sql .= ' ORDER BY '.$conditions['order_by'];
        }

        if[array_key_exists["start",$conditions] && array_key_exists["limit",$conditions]]{
            $sql .= ' LIMIT '.$conditions['start'].','.$conditions['limit'];
        }elseif[!array_key_exists["start",$conditions] && array_key_exists["limit",$conditions]]{
            $sql .= ' LIMIT '.$conditions['limit'];
        }

        $result = $this->db->query[$sql];

        if[array_key_exists["return_type",$conditions] && $conditions['return_type'] != 'all']{
            switch[$conditions['return_type']]{
                case 'count':
                    $data = $result->num_rows;
                    break;
                case 'single':
                    $data = $result->fetch_assoc[];
                    break;
                default:
                    $data = '';
            }
        }else{
            if[$result->num_rows > 0]{
                while[$row = $result->fetch_assoc[]]{
                    $data[] = $row;
                }
            }
        }
        return !empty[$data]?$data:false;
    }

    /*
     * Insert data into the database
     * @param string name of the table
     * @param array the data for inserting into the table
     */
    public function insert[$data]{
        if[!empty[$data] && is_array[$data]]{
            $columns = '';
            $values  = '';
            $i = 0;
            if[!array_key_exists['created',$data]]{
                $data['created'] = date["Y-m-d H:i:s"];
            }
            if[!array_key_exists['modified',$data]]{
                $data['modified'] = date["Y-m-d H:i:s"];
            }
            foreach[$data as $key=>$val]{
                $pre = [$i > 0]?', ':'';
                $columns .= $pre.$key;
                $values  .= $pre."'".$val."'";
                $i++;
            }
            $query = "INSERT INTO ".$this->userTbl." [".$columns."] VALUES [".$values."]";
            $insert = $this->db->query[$query];
            return $insert?$this->db->insert_id:false;
        }else{
            return false;
        }
    }

}

Xử lý yêu cầu đăng ký, đăng nhập và đăng xuất [userAccount. php]

Tập lệnh phía máy chủ này xử lý yêu cầu đăng ký, xác thực và đăng xuất đến từ

CREATE TABLE `users` [
  `id` int[11] NOT NULL AUTO_INCREMENT,
  `first_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
  `last_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar[50] COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar[255] COLLATE utf8_unicode_ci NOT NULL,
  `phone` varchar[15] COLLATE utf8_unicode_ci NOT NULL,
  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,
  `status` tinyint[1] NOT NULL DEFAULT 1 COMMENT '1=Active | 0=Block',
  PRIMARY KEY [`id`]
] ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
5 và
CREATE TABLE `users` [
  `id` int[11] NOT NULL AUTO_INCREMENT,
  `first_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
  `last_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar[50] COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar[255] COLLATE utf8_unicode_ci NOT NULL,
  `phone` varchar[15] COLLATE utf8_unicode_ci NOT NULL,
  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,
  `status` tinyint[1] NOT NULL DEFAULT 1 COMMENT '1=Active | 0=Block',
  PRIMARY KEY [`id`]
] ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
0. Lớp Người dùng [
CREATE TABLE `users` [
  `id` int[11] NOT NULL AUTO_INCREMENT,
  `first_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
  `last_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar[50] COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar[255] COLLATE utf8_unicode_ci NOT NULL,
  `phone` varchar[15] COLLATE utf8_unicode_ci NOT NULL,
  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,
  `status` tinyint[1] NOT NULL DEFAULT 1 COMMENT '1=Active | 0=Block',
  PRIMARY KEY [`id`]
] ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
1] được sử dụng để tìm nạp và chèn dữ liệu tài khoản người dùng từ/đến cơ sở dữ liệu

  • CREATE TABLE `users` [
      `id` int[11] NOT NULL AUTO_INCREMENT,
      `first_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
      `last_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
      `email` varchar[50] COLLATE utf8_unicode_ci NOT NULL,
      `password` varchar[255] COLLATE utf8_unicode_ci NOT NULL,
      `phone` varchar[15] COLLATE utf8_unicode_ci NOT NULL,
      `created` datetime NOT NULL,
      `modified` datetime NOT NULL,
      `status` tinyint[1] NOT NULL DEFAULT 1 COMMENT '1=Active | 0=Block',
      PRIMARY KEY [`id`]
    ] ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    2 – Nếu yêu cầu đăng ký được gửi, dữ liệu đầu vào sẽ được chèn vào cơ sở dữ liệu sau khi xác thực
  • CREATE TABLE `users` [
      `id` int[11] NOT NULL AUTO_INCREMENT,
      `first_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
      `last_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
      `email` varchar[50] COLLATE utf8_unicode_ci NOT NULL,
      `password` varchar[255] COLLATE utf8_unicode_ci NOT NULL,
      `phone` varchar[15] COLLATE utf8_unicode_ci NOT NULL,
      `created` datetime NOT NULL,
      `modified` datetime NOT NULL,
      `status` tinyint[1] NOT NULL DEFAULT 1 COMMENT '1=Active | 0=Block',
      PRIMARY KEY [`id`]
    ] ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    3 – Nếu yêu cầu đăng nhập được gửi, hệ thống sẽ kiểm tra xem có bản ghi nào tồn tại trong cơ sở dữ liệu với email và mật khẩu đã cho hay không
  • CREATE TABLE `users` [
      `id` int[11] NOT NULL AUTO_INCREMENT,
      `first_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
      `last_name` varchar[25] COLLATE utf8_unicode_ci NOT NULL,
      `email` varchar[50] COLLATE utf8_unicode_ci NOT NULL,
      `password` varchar[255] COLLATE utf8_unicode_ci NOT NULL,
      `phone` varchar[15] COLLATE utf8_unicode_ci NOT NULL,
      `created` datetime NOT NULL,
      `modified` datetime NOT NULL,
      `status` tinyint[1] NOT NULL DEFAULT 1 COMMENT '1=Active | 0=Block',
      PRIMARY KEY [`id`]
    ] ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    4 – Nếu yêu cầu đăng xuất được gửi, hệ thống sẽ đăng xuất người dùng khỏi tài khoản của họ
  • PHIÊN PHP được sử dụng để giữ trạng thái đăng nhập của người dùng
________số 8

Phiếu đăng ký [đăng ký. php]

Các phần tử biểu mẫu HTML sau đây cho phép nhập thông tin tài khoản [tên, email, mật khẩu, v.v. ] để đăng ký

  • Khi gửi, dữ liệu biểu mẫu được gửi tới tập lệnh phía máy chủ [________ 15] để xử lý yêu cầu đăng ký

Biểu mẫu đăng nhập và chi tiết tài khoản người dùng [chỉ mục. php]

Ban đầu, biểu mẫu đăng nhập được hiển thị để cho phép người dùng đăng nhập bằng email và mật khẩu

  • Nếu người dùng đã đăng nhập, phần chi tiết tài khoản sẽ được hiển thị
  • Trong màn hình đăng nhập, liên kết đăng ký được cung cấp
  • Trong màn hình tài khoản, liên kết đăng xuất được cung cấp

Sự kết luận

Hy vọng hướng dẫn từng bước này và tập lệnh ví dụ sẽ giúp bạn triển khai hệ thống đăng ký và đăng nhập trong ứng dụng web PHP. Bạn có thể tích hợp chức năng user login vào website với PHP và MySQL bằng SESSION. Ngoài ra, bạn có thể mở rộng Lớp người dùng để xây dựng hệ thống xác thực người dùng và hệ thống quản lý người dùng nâng cao.
Phần tiếp theo. Quên mật khẩu Triển khai chức năng khôi phục trong hệ thống đăng nhập bằng PHP và MySQL

Bạn có muốn nhận trợ giúp triển khai hay sửa đổi hoặc nâng cao chức năng của tập lệnh này không?

Làm cách nào để tạo biểu mẫu đăng nhập và đăng ký trong php và MySQL?

Cách tạo Hệ thống Đăng ký và Đăng nhập bằng PHP và MySQL .
Tạo cơ sở dữ liệu và bảng cơ sở dữ liệu
Kết nối với cơ sở dữ liệu
Phiên tạo cho người dùng đã đăng nhập
Tạo một mẫu đăng ký và đăng nhập
Tạo trang tổng quan
Tạo Đăng xuất [Hủy phiên]
Tạo tệp CSS

Làm cách nào để đăng nhập bằng php và MySQL?

Để chạy form đăng nhập các bạn mở xampp control panel chạy apache server và PHP. Bây giờ, gõ localhost/xampp/tên thư mục/tên tệp trong trình duyệt và nhấn phím Enter. Tất cả các thiết lập được thực hiện ngay bây giờ. Nhập tên người dùng và mật khẩu vào mẫu đăng nhập và nhấp vào nút đăng nhập

Làm cách nào để kết nối trang đăng ký với cơ sở dữ liệu trong php?

Đối với điều này, bạn cần làm theo các bước sau. .
Bước 1. Lọc các yêu cầu về biểu mẫu HTML của bạn cho trang web liên hệ với chúng tôi. .
Bước 2. Tạo cơ sở dữ liệu và bảng trong MySQL. .
Bước 3. Tạo biểu mẫu HTML để kết nối với cơ sở dữ liệu. .
Bước 4. Tạo một trang PHP để lưu dữ liệu từ dạng HTML vào cơ sở dữ liệu MySQL của bạn. .
Bước 5. Tất cả đã được làm xong

Làm cách nào để tạo một hệ thống đăng nhập an toàn với php và MySQL?

Bắt đầu. Có một số bước chúng tôi cần thực hiện trước khi tạo hệ thống đăng nhập an toàn của mình. .
Tạo thiết kế biểu mẫu đăng nhập. .
Tạo cơ sở dữ liệu và thiết lập bảng. .
Xác thực người dùng bằng PHP. .
Tạo Trang chủ. .
Tạo trang hồ sơ. .
Tạo tập lệnh đăng xuất

Chủ Đề