Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk melaksanakan lompat log masuk ke fungsi halaman html dalam php

Bagaimana untuk melaksanakan lompat log masuk ke fungsi halaman html dalam php

PHPz
PHPzasal
2023-04-04 10:43:08876semak imbas

Melaksanakan lompat log masuk ke halaman HTML dalam PHP memerlukan beberapa kemahiran pengaturcaraan asas. Berikut ialah langkah khusus untuk melaksanakan proses:

  1. Buat halaman log masuk

Pertama, anda perlu mencipta halaman log masuk untuk mengumpul bukti kelayakan log masuk pengguna. Halaman ini akan digunakan untuk mengesahkan kelayakan pengguna dan merujuk pengguna yang log masuk ke halaman lain yang dilindungi.

  1. Tetapkan logik pengesahan log masuk

Dalam PHP, anda boleh mencipta logik pengesahan untuk mengesahkan bahawa bukti kelayakan yang dimasukkan oleh pengguna adalah sah. Fungsi ini boleh dicapai menggunakan pangkalan data MySQL dan sesi PHP. Langkah-langkah khusus adalah seperti berikut:

  • Rekod nama pengguna dan kata laluan yang dimasukkan oleh pengguna.
  • Membandingkan nama pengguna dan kata laluan dengan maklumat akaun yang disimpan dalam pangkalan data MySQL.
  • Jika nama pengguna dan kata laluan yang dimasukkan sepadan dengan pangkalan data, bukti kelayakan pengguna disimpan dalam pembolehubah sesi PHP dan diubah hala ke halaman yang dilindungi.
  • Jika nama pengguna dan kata laluan yang dimasukkan tidak sepadan, paparkan mesej ralat kepada pengguna.

Berikut ialah contoh kod logik pengesahan:

<?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. Mencipta halaman HTML yang dilindungi

Dalam PHP, anda boleh Gunakan pembolehubah sesi untuk mengesahkan bahawa pengguna telah log masuk. Jika pengguna log masuk, halaman HTML yang dilindungi boleh dipaparkan. Jika tidak, ubah hala ke halaman log masuk diperlukan.

  1. Tambah kod PHP dalam halaman log masuk

Dalam halaman log masuk, anda boleh menggunakan kod PHP untuk mengendalikan penyerahan dan pengesahan borang. Langkah-langkah khusus adalah seperti berikut:

  • Buat borang untuk menyerahkan bukti kelayakan pengguna.
  • Apabila menyerahkan borang, sahkan bahawa bukti kelayakan yang dimasukkan oleh pengguna adalah sah dan ubah hala ke halaman yang dilindungi atau paparkan mesej ralat.
  • Jika pengguna sudah log masuk, ubah hala secara automatik ke halaman yang dilindungi dan bukannya menunjukkan borang log masuk.

Berikut ialah contoh kod dengan borang log masuk dan kod 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>

Di atas adalah langkah asas dan contoh kod untuk melaksanakan log masuk pengguna untuk melompat ke HTML halaman melalui PHP.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan lompat log masuk ke fungsi halaman html dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn