Heim >Backend-Entwicklung >PHP-Problem >So implementieren Sie die Login-Sprung-zur-HTML-Seitenfunktion in PHP

So implementieren Sie die Login-Sprung-zur-HTML-Seitenfunktion in PHP

PHPz
PHPzOriginal
2023-04-04 10:43:08876Durchsuche

Die Implementierung des Anmeldesprungs zur HTML-Seite in PHP erfordert den Einsatz einiger grundlegender Programmierkenntnisse. Hier sind die spezifischen Schritte zur Implementierung des Prozesses:

  1. Erstellen Sie eine Anmeldeseite.

Zuerst müssen Sie eine Anmeldeseite erstellen, um die Anmeldeinformationen des Benutzers zu erfassen. Diese Seite wird verwendet, um Benutzeranmeldeinformationen zu überprüfen und angemeldete Benutzer auf andere geschützte Seiten zu verweisen.

  1. Logik zur Anmeldeüberprüfung einrichten

In PHP können Sie eine Überprüfungslogik erstellen, um zu überprüfen, ob die vom Benutzer eingegebenen Anmeldeinformationen gültig sind. Diese Funktionalität kann mithilfe einer MySQL-Datenbank und einer PHP-Sitzung erreicht werden. Die spezifischen Schritte sind wie folgt:

  • Notieren Sie den vom Benutzer eingegebenen Benutzernamen und das Passwort.
  • Vergleicht Benutzernamen und Passwort mit den in der MySQL-Datenbank gespeicherten Kontoinformationen.
  • Wenn der eingegebene Benutzername und das Passwort mit der Datenbank übereinstimmen, werden die Benutzeranmeldeinformationen in den Sitzungsvariablen von PHP gespeichert und auf eine geschützte Seite weitergeleitet.
  • Wenn der eingegebene Benutzername und das Passwort nicht übereinstimmen, wird dem Benutzer eine Fehlermeldung angezeigt.

Hier ist ein Codebeispiel der Validierungslogik:

<?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. Erstellen einer geschützten HTML-Seite

In PHP können Sie Sitzungsvariablen verwenden, um zu überprüfen, ob der Benutzer angemeldet ist. Wenn der Benutzer angemeldet ist, kann eine geschützte HTML-Seite angezeigt werden. Andernfalls ist eine Weiterleitung zur Anmeldeseite erforderlich.

  1. PHP-Code zur Anmeldeseite hinzufügen

Auf der Anmeldeseite können Sie PHP-Code für die Formularübermittlung und -validierung verwenden. Die konkreten Schritte lauten wie folgt:

  • Erstellen Sie ein Formular zur Übermittlung von Benutzeranmeldeinformationen.
  • Überprüfen Sie beim Absenden eines Formulars, ob die vom Benutzer eingegebenen Anmeldeinformationen gültig sind, und leiten Sie auf eine geschützte Seite weiter oder zeigen Sie eine Fehlermeldung an.
  • Wenn der Benutzer bereits angemeldet ist, wird er automatisch zur geschützten Seite weitergeleitet, anstatt das Anmeldeformular anzuzeigen.

Das Folgende ist ein Beispielcode mit einem Anmeldeformular und PHP-Code:

<?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>

Das Obige sind die grundlegenden Schritte und Codebeispiele zur Implementierung der Benutzeranmeldung, um über PHP zur HTML-Seite zu springen.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Login-Sprung-zur-HTML-Seitenfunktion in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn