Hướng dẫn how do i create a registration and login system with php and mysql? - làm cách nào để tạo hệ thống đăng ký và đăng nhập bằng php và mysql?

Trong hướng dẫn này, bạn sẽ tìm hiểu cách xây dựng một hệ thống đăng nhập với PHP và MySQL.

Thực hiện cơ chế xác thực người dùng

Xác thực người dùng là rất phổ biến trong ứng dụng web hiện đại. Đây là một cơ chế bảo mật được sử dụng để hạn chế quyền truy cập trái phép vào các khu vực và công cụ chỉ dành cho thành viên trên một trang web.

Trong hướng dẫn này, chúng tôi sẽ tạo một hệ thống đăng ký và đăng nhập đơn giản bằng PHP và MySQL. Hướng dẫn này bao gồm hai phần: trong phần đầu tiên, chúng tôi sẽ tạo biểu mẫu đăng ký người dùng và trong phần thứ hai, chúng tôi sẽ tạo biểu mẫu đăng nhập, cũng như trang chào mừng và tập lệnh đăng xuất.

Xây dựng hệ thống đăng ký

Trong phần này, chúng tôi sẽ xây dựng một hệ thống đăng ký cho phép người dùng tạo một tài khoản mới bằng cách điền vào biểu mẫu web. Nhưng, trước tiên chúng ta cần tạo một bảng sẽ chứa tất cả dữ liệu người dùng.

Bước 1: Tạo bảng cơ sở dữ liệu

Thực hiện truy vấn SQL sau để tạo bảng người dùng bên trong cơ sở dữ liệu MySQL của bạn.

CREATE TABLE users (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

Vui lòng xem hướng dẫn trên câu lệnh SQL

5 để biết thông tin chi tiết về cú pháp để tạo các bảng trong hệ thống cơ sở dữ liệu MySQL.

Bước 2: Tạo tệp cấu hình

Sau khi tạo bảng, chúng tôi cần tạo tập lệnh PHP để kết nối với máy chủ cơ sở dữ liệu MySQL. Hãy tạo một tệp có tên "config.php" và đặt mã sau bên trong nó.

Thí dụ

Thủ tục định hướng Object Oriented PDO

Tải xuống

connect_error);
}
?>
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("ERROR: Could not connect. " . $e->getMessage());
}
?>

Nếu bạn đã tải xuống các ví dụ về mã PDO theo định hướng đối tượng hoặc PDO bằng nút tải xuống, vui lòng xóa văn bản "-oo-format" hoặc "-pdo-format" khỏi tên tệp trước khi kiểm tra mã.

Lưu ý: Thay thế thông tin đăng nhập theo cài đặt máy chủ MySQL của bạn Trước khi kiểm tra mã này, ví dụ, thay thế tên cơ sở dữ liệu 'demo' bằng tên cơ sở dữ liệu của riêng bạn, hãy thay thế tên người dùng 'root' bằng tên người dùng cơ sở dữ liệu của riêng bạn, chỉ định mật khẩu cơ sở dữ liệu nếu có. Replace the credentials according to your MySQL server setting before testing this code, for example, replace the database name 'demo' with your own database name, replace username 'root' with your own database username, specify database password if there's any.

Bước 3: Tạo mẫu đăng ký

Hãy tạo một tệp PHP khác "Đăng ký.php" và đặt mã ví dụ sau trong đó. Mã ví dụ này sẽ tạo một biểu mẫu web cho phép người dùng tự đăng ký.

Tập lệnh này cũng sẽ tạo lỗi nếu người dùng cố gắng gửi biểu mẫu mà không cần nhập bất kỳ giá trị nào hoặc nếu tên người dùng được nhập bởi người dùng đã được người dùng nhập vào.

Thí dụ

Thủ tục định hướng Object Oriented PDO

Tải xuống


 



    
    Sign Up
    
    


    

Sign Up

Please fill this form to create an account.

" method="post">

Already have an account? Login here.

prepare($sql)){
            // Bind variables to the prepared statement as parameters
            $stmt->bind_param("s", $param_username);
            
            // Set parameters
            $param_username = trim($_POST["username"]);
            
            // Attempt to execute the prepared statement
            if($stmt->execute()){
                // store result
                $stmt->store_result();
                
                if($stmt->num_rows == 1){
                    $username_err = "This username is already taken.";
                } else{
                    $username = trim($_POST["username"]);
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }

            // Close statement
            $stmt->close();
        }
    }
    
    // Validate password
    if(empty(trim($_POST["password"]))){
        $password_err = "Please enter a password.";     
    } elseif(strlen(trim($_POST["password"])) < 6){
        $password_err = "Password must have atleast 6 characters.";
    } else{
        $password = trim($_POST["password"]);
    }
    
    // Validate confirm password
    if(empty(trim($_POST["confirm_password"]))){
        $confirm_password_err = "Please confirm password.";     
    } else{
        $confirm_password = trim($_POST["confirm_password"]);
        if(empty($password_err) && ($password != $confirm_password)){
            $confirm_password_err = "Password did not match.";
        }
    }
    
    // Check input errors before inserting in database
    if(empty($username_err) && empty($password_err) && empty($confirm_password_err)){
        
        // Prepare an insert statement
        $sql = "INSERT INTO users (username, password) VALUES (?, ?)";
         
        if($stmt = $mysqli->prepare($sql)){
            // Bind variables to the prepared statement as parameters
            $stmt->bind_param("ss", $param_username, $param_password);
            
            // Set parameters
            $param_username = $username;
            $param_password = password_hash($password, PASSWORD_DEFAULT); // Creates a password hash
            
            // Attempt to execute the prepared statement
            if($stmt->execute()){
                // Redirect to login page
                header("location: login.php");
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }

            // Close statement
            $stmt->close();
        }
    }
    
    // Close connection
    $mysqli->close();
}
?>
 



    
    Sign Up
    
    


    

Sign Up

Please fill this form to create an account.

" method="post">

Already have an account? Login here.

prepare($sql)){
            // Bind variables to the prepared statement as parameters
            $stmt->bindParam(":username", $param_username, PDO::PARAM_STR);
            
            // Set parameters
            $param_username = trim($_POST["username"]);
            
            // Attempt to execute the prepared statement
            if($stmt->execute()){
                if($stmt->rowCount() == 1){
                    $username_err = "This username is already taken.";
                } else{
                    $username = trim($_POST["username"]);
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }

            // Close statement
            unset($stmt);
        }
    }
    
    // Validate password
    if(empty(trim($_POST["password"]))){
        $password_err = "Please enter a password.";     
    } elseif(strlen(trim($_POST["password"])) < 6){
        $password_err = "Password must have atleast 6 characters.";
    } else{
        $password = trim($_POST["password"]);
    }
    
    // Validate confirm password
    if(empty(trim($_POST["confirm_password"]))){
        $confirm_password_err = "Please confirm password.";     
    } else{
        $confirm_password = trim($_POST["confirm_password"]);
        if(empty($password_err) && ($password != $confirm_password)){
            $confirm_password_err = "Password did not match.";
        }
    }
    
    // Check input errors before inserting in database
    if(empty($username_err) && empty($password_err) && empty($confirm_password_err)){
        
        // Prepare an insert statement
        $sql = "INSERT INTO users (username, password) VALUES (:username, :password)";
         
        if($stmt = $pdo->prepare($sql)){
            // Bind variables to the prepared statement as parameters
            $stmt->bindParam(":username", $param_username, PDO::PARAM_STR);
            $stmt->bindParam(":password", $param_password, PDO::PARAM_STR);
            
            // Set parameters
            $param_username = $username;
            $param_password = password_hash($password, PASSWORD_DEFAULT); // Creates a password hash
            
            // Attempt to execute the prepared statement
            if($stmt->execute()){
                // Redirect to login page
                header("location: login.php");
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }

            // Close statement
            unset($stmt);
        }
    }
    
    // Close connection
    unset($pdo);
}
?>
 



    
    Sign Up
    
    


    

Sign Up

Please fill this form to create an account.

" method="post">

Already have an account? Login here.

Nếu bạn đã tải xuống các ví dụ về mã PDO theo định hướng đối tượng hoặc PDO bằng nút tải xuống, vui lòng xóa văn bản "-oo-format" hoặc "-pdo-format" khỏi tên tệp trước khi kiểm tra mã.

Hướng dẫn how do i create a registration and login system with php and mysql? - làm cách nào để tạo hệ thống đăng ký và đăng nhập bằng php và mysql?

Lưu ý: Thay thế thông tin đăng nhập theo cài đặt máy chủ MySQL của bạn Trước khi kiểm tra mã này, ví dụ, thay thế tên cơ sở dữ liệu 'demo' bằng tên cơ sở dữ liệu của riêng bạn, hãy thay thế tên người dùng 'root' bằng tên người dùng cơ sở dữ liệu của riêng bạn, chỉ định mật khẩu cơ sở dữ liệu nếu có.

Bước 3: Tạo mẫu đăng ký

Hãy tạo một tệp PHP khác "Đăng ký.php" và đặt mã ví dụ sau trong đó. Mã ví dụ này sẽ tạo một biểu mẫu web cho phép người dùng tự đăng ký.

Tập lệnh này cũng sẽ tạo lỗi nếu người dùng cố gắng gửi biểu mẫu mà không cần nhập bất kỳ giá trị nào hoặc nếu tên người dùng được nhập bởi người dùng đã được người dùng nhập vào. Password salting is a technique which is widely used to secure passwords by randomizing password hashes, so that if two users have the same password, they will not have the same password hashes. This is done by appending or prepending a random string, called a salt, to the password before hashing.


- Đầu ra của ví dụ trên (tức là mẫu đăng ký) sẽ trông giống như thế này:

Trong ví dụ trên, chúng tôi đã sử dụng hàm

6 sẵn có của PHP để tạo mật khẩu băm từ chuỗi mật khẩu được nhập bởi người dùng (dòng số 78). Hàm này tạo ra một hàm băm mật khẩu bằng thuật toán băm một chiều mạnh mẽ. Nó cũng tạo và áp dụng một loại muối ngẫu nhiên tự động khi băm mật khẩu; Điều này về cơ bản có nghĩa là ngay cả khi hai người dùng có cùng một mật khẩu, băm mật khẩu của họ sẽ khác nhau.

Chúng tôi đã sử dụng khung Bootstrap để tạo bố cục biểu mẫu một cách nhanh chóng và đẹp mắt. Xin vui lòng, hãy kiểm tra phần Hướng dẫn Bootstrap để tìm hiểu thêm về khung này.

Thí dụ

Thủ tục định hướng Object Oriented PDO

Tải xuống


 



    
    Login
    
    


    

Login

Please fill in your credentials to login.

' . $login_err . '
'; } ?>
" method="post">

Don't have an account? Sign up now.

prepare($sql)){
            // Bind variables to the prepared statement as parameters
            $stmt->bind_param("s", $param_username);
            
            // Set parameters
            $param_username = $username;
            
            // Attempt to execute the prepared statement
            if($stmt->execute()){
                // Store result
                $stmt->store_result();
                
                // Check if username exists, if yes then verify password
                if($stmt->num_rows == 1){                    
                    // Bind result variables
                    $stmt->bind_result($id, $username, $hashed_password);
                    if($stmt->fetch()){
                        if(password_verify($password, $hashed_password)){
                            // Password is correct, so start a new session
                            session_start();
                            
                            // Store data in session variables
                            $_SESSION["loggedin"] = true;
                            $_SESSION["id"] = $id;
                            $_SESSION["username"] = $username;                            
                            
                            // Redirect user to welcome page
                            header("location: welcome.php");
                        } else{
                            // Password is not valid, display a generic error message
                            $login_err = "Invalid username or password.";
                        }
                    }
                } else{
                    // Username doesn't exist, display a generic error message
                    $login_err = "Invalid username or password.";
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }

            // Close statement
            $stmt->close();
        }
    }
    
    // Close connection
    $mysqli->close();
}
?>
 



    
    Login
    
    


    

Login

Please fill in your credentials to login.

' . $login_err . '
'; } ?>
" method="post">

Don't have an account? Sign up now.

prepare($sql)){
            // Bind variables to the prepared statement as parameters
            $stmt->bindParam(":username", $param_username, PDO::PARAM_STR);
            
            // Set parameters
            $param_username = trim($_POST["username"]);
            
            // Attempt to execute the prepared statement
            if($stmt->execute()){
                // Check if username exists, if yes then verify password
                if($stmt->rowCount() == 1){
                    if($row = $stmt->fetch()){
                        $id = $row["id"];
                        $username = $row["username"];
                        $hashed_password = $row["password"];
                        if(password_verify($password, $hashed_password)){
                            // Password is correct, so start a new session
                            session_start();
                            
                            // Store data in session variables
                            $_SESSION["loggedin"] = true;
                            $_SESSION["id"] = $id;
                            $_SESSION["username"] = $username;                            
                            
                            // Redirect user to welcome page
                            header("location: welcome.php");
                        } else{
                            // Password is not valid, display a generic error message
                            $login_err = "Invalid username or password.";
                        }
                    }
                } else{
                    // Username doesn't exist, display a generic error message
                    $login_err = "Invalid username or password.";
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }

            // Close statement
            unset($stmt);
        }
    }
    
    // Close connection
    unset($pdo);
}
?>
 



    
    Login
    
    


    

Login

Please fill in your credentials to login.

' . $login_err . '
'; } ?>
" method="post">

Don't have an account? Sign up now.

Nếu bạn đã tải xuống các ví dụ về mã PDO theo định hướng đối tượng hoặc PDO bằng nút tải xuống, vui lòng xóa văn bản "-oo-format" hoặc "-pdo-format" khỏi tên tệp trước khi kiểm tra mã.

Hướng dẫn how do i create a registration and login system with php and mysql? - làm cách nào để tạo hệ thống đăng ký và đăng nhập bằng php và mysql?

Lưu ý: Thay thế thông tin đăng nhập theo cài đặt máy chủ MySQL của bạn Trước khi kiểm tra mã này, ví dụ, thay thế tên cơ sở dữ liệu 'demo' bằng tên cơ sở dữ liệu của riêng bạn, hãy thay thế tên người dùng 'root' bằng tên người dùng cơ sở dữ liệu của riêng bạn, chỉ định mật khẩu cơ sở dữ liệu nếu có.

Bước 3: Tạo mẫu đăng ký

0

Hãy tạo một tệp PHP khác "Đăng ký.php" và đặt mã ví dụ sau trong đó. Mã ví dụ này sẽ tạo một biểu mẫu web cho phép người dùng tự đăng ký.

Ví dụ: sau khi thoát các ký tự đặc biệt, chuỗi

9 trở thành
connect_error);
}
?>
0 không được thực hiện bởi trình duyệt.

Bước 3: Tạo tập lệnh đăng xuất

Bây giờ, hãy tạo tệp "logout.php". Khi người dùng nhấp vào liên kết đăng xuất hoặc đăng xuất, tập lệnh bên trong tệp này sẽ phá hủy phiên và chuyển hướng người dùng trở lại trang đăng nhập.

1


Thêm tính năng đặt lại mật khẩu

Cuối cùng, trong phần này, chúng tôi sẽ thêm tiện ích đặt lại mật khẩu vào hệ thống đăng nhập của chúng tôi. Sử dụng tính năng này được đăng nhập vào người dùng có thể đặt lại ngay mật khẩu cho tài khoản của họ.

Chúng ta hãy tạo một tệp có tên "Reset-password.php" và đặt mã sau bên trong nó.

Thí dụ

Thủ tục định hướng Object Oriented PDO

Tải xuống

2
3
4

Làm cách nào để tạo một trang đăng nhập và đăng ký?

Hãy đi - đây là những bước chính:..
Cài đặt và kích hoạt plugin đăng ký người dùng ..
Kích hoạt tiện ích bổ sung đăng ký người dùng ..
Tạo một biểu mẫu đăng nhập tùy chỉnh ..
Tạo một mẫu đăng ký tùy chỉnh ..
Tùy chỉnh trang đăng nhập và đăng ký WordPress ..

Làm cách nào để tạo một trang đăng nhập và đăng ký với cơ sở dữ liệu trong HTML?

Bước 1- Tạo biểu mẫu đăng nhập PHP HTML.Để tạo biểu mẫu đăng nhập, hãy làm theo các bước được đề cập dưới đây: ....
Bước 2: Tạo mã CSS để thiết kế trang web.....
Bước 3: Tạo bảng cơ sở dữ liệu bằng MySQL.....
Bước 4: Mở kết nối với cơ sở dữ liệu MySQL.....
Bước 5 - Tạo một phiên đăng xuất.....
Bước 6 - Tạo mã cho trang chủ ..

Làm thế nào có thể chèn dữ liệu đăng ký vào cơ sở dữ liệu bằng PHP?

Hoàn thành các bước để thiết kế dự án:..
Bắt đầu XAMPP Server ..
Mở LocalHost/PHPMyAdmin trong trình duyệt web của bạn ..
Tạo cơ sở dữ liệu của nhân viên tên và bảng của trường đại học ..
Viết mã HTML và PHP trong notepad của bạn vào một thư mục cụ thể ..
Gửi dữ liệu thông qua biểu mẫu HTML ..
Xác minh kết quả ..

Làm thế nào chúng ta có thể tạo cơ sở dữ liệu bằng PHP và MySQL?

Các bước cơ bản để tạo cơ sở dữ liệu MySQL bằng PHP là: Thiết lập kết nối với máy chủ MySQL từ tập lệnh PHP của bạn như được mô tả trong bài viết này.Nếu kết nối thành công, hãy viết truy vấn SQL để tạo cơ sở dữ liệu và lưu trữ nó trong một biến chuỗi.Thực hiện truy vấn.