Maison >développement back-end >Problème PHP >Comment implémenter la fonction de connexion à la page HTML en php

Comment implémenter la fonction de connexion à la page HTML en php

PHPz
PHPzoriginal
2023-04-04 10:43:08874parcourir

La mise en œuvre du saut de connexion vers la page HTML en PHP nécessite des compétences de base en programmation. Voici les étapes spécifiques pour mettre en œuvre le processus :

  1. Créer une page de connexion

Tout d'abord, vous devez créer une page de connexion pour collecter les informations de connexion de l'utilisateur. Cette page sera utilisée pour vérifier les informations d'identification de l'utilisateur et renvoyer les utilisateurs connectés vers d'autres pages protégées.

  1. Configurer une logique de vérification de connexion

En PHP, vous pouvez créer une logique de vérification pour vérifier que les informations d'identification saisies par l'utilisateur sont valides. Cette fonctionnalité peut être réalisée à l'aide d'une base de données MySQL et d'une session PHP. Les étapes spécifiques sont les suivantes :

  • Enregistrez le nom d'utilisateur et le mot de passe saisis par l'utilisateur.
  • Compare le nom d'utilisateur et le mot de passe avec les informations de compte stockées dans la base de données MySQL.
  • Si le nom d'utilisateur et le mot de passe saisis correspondent à la base de données, les informations d'identification de l'utilisateur sont stockées dans les variables de session PHP et redirigées vers une page protégée.
  • Si le nom d'utilisateur et le mot de passe saisis ne correspondent pas, affichez un message d'erreur à l'utilisateur.

Voici un exemple de code de logique de validation :

<?php
// Start the session
session_start();

// Check if the user is already logged in
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
    header("location: welcome.php");
    exit;
}

// Include config file
require_once "config.php";

// Define variables and initialize with empty values
$username = $password = "";
$username_err = $password_err = "";

// Processing form data when form is submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){

    // Check if username is empty
    if(empty(trim($_POST["username"]))){
        $username_err = "Please enter username.";
    } else{
        $username = trim($_POST["username"]);
    }

    // Check if password is empty
    if(empty(trim($_POST["password"]))){
        $password_err = "Please enter your password.";
    } else{
        $password = trim($_POST["password"]);
    }

    // Validate credentials
    if(empty($username_err) && empty($password_err)){
        // Prepare a select statement
        $sql = "SELECT id, username, password FROM users WHERE username = ?";

        if($stmt = $mysqli->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{
                            // Display an error message if password is not valid
                            $password_err = "The password you entered was not valid.";
                        }
                    }
                } else{
                    // Display an error message if username doesn't exist
                    $username_err = "No account found with that username.";
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }
        }

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

    // Close connection
    $mysqli->close();
}
?>
  1. Création d'une page HTML protégée

En PHP, vous pouvez utiliser des variables de session pour vérifier que l'utilisateur est connecté. Si l'utilisateur est connecté, une page HTML protégée peut être affichée. Sinon, une redirection vers la page de connexion est requise.

  1. Ajoutez du code PHP à la page de connexion

Dans la page de connexion, vous pouvez utiliser le code PHP pour gérer la soumission et la validation du formulaire. Les étapes spécifiques sont les suivantes :

  • Créez un formulaire pour soumettre les informations d'identification de l'utilisateur.
  • Lors de la soumission d'un formulaire, vérifiez que les identifiants saisis par l'utilisateur sont valides et redirigez vers une page protégée ou affichez un message d'erreur.
  • Si l'utilisateur est déjà connecté, redirigez automatiquement vers la page protégée au lieu d'afficher le formulaire de connexion.

Ce qui suit est un exemple de code avec un formulaire de connexion et du code PHP :

<?php
// Initialize the session
session_start();

// Check if the user is already logged in, if yes then redirect him to welcome page
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
    header("location: welcome.html");
    exit;
}

// Include config file
require_once "config.php";

// Define variables and initialize with empty values
$username = $password = "";
$username_err = $password_err = "";

// Processing form data when form is submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){

    // Check if username is empty
    if(empty(trim($_POST["username"]))){
        $username_err = "Please enter username.";
    } else{
        $username = trim($_POST["username"]);
    }

    // Check if password is empty
    if(empty(trim($_POST["password"]))){
        $password_err = "Please enter your password.";
    } else{
        $password = trim($_POST["password"]);
    }

    // Validate credentials
    if(empty($username_err) && empty($password_err)){
        // Prepare a select statement
        $sql = "SELECT id, username, password FROM users WHERE username = ?";

        if($stmt = $mysqli->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.html");
                        } else{
                            // Display an error message if password is not valid
                            $password_err = "The password you entered was not valid.";
                        }
                    }
                } else{
                    // Display an error message if username doesn't exist
                    $username_err = "No account found with that username.";
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }
        }

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

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
    <style>
        body{ font: 14px sans-serif; }
        .wrapper{ width: 350px; padding: 20px; }
    </style>
</head>
<body>
    <div class="wrapper">
        <h2>Login</h2>
        <p>Please fill in your credentials to login.</p>
        <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
            <div <?php echo (!empty($username_err)) ? &#39;has-error&#39; : &#39;&#39;; ?>">
                <label>Username</label>
                <input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
                <span <?php echo (!empty($username_err)) ? &#39;help-block&#39; : &#39;&#39;; ?>"><?php echo $username_err; ?></span>
            </div>
            <div <?php echo (!empty($password_err)) ? &#39;has-error&#39; : &#39;&#39;; ?>">
                <label>Password</label>
                <input type="password" name="password" class="form-control">
                <span <?php echo (!empty($password_err)) ? &#39;help-block&#39; : &#39;&#39;; ?>"><?php echo $password_err; ?></span>
            </div>
            <div class="form-group">
                <input type="submit" class="btn btn-primary" value="Login">
            </div>
            <p>Don't have an account? <a href="register.html">Sign up now</a>.</p>
        </form>
    </div>
</body>
</html>

Ce qui précède sont les étapes de base et des exemples de code pour implémenter la connexion de l'utilisateur afin d'accéder à la page HTML via PHP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn