在PHP中实现登录功能,通常需要以下几个步骤:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login Form</title>
</head>
<body>
<form action="login.php" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
<br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
<br>
<input type="submit" value="Login">
</form>
</body>
</html>
<?php
// 连接到数据库
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// 获取用户输入的用户名和密码
$username = $_POST['username'];
$password = $_POST['password'];
// 使用预处理语句查询数据库
$stmt = $conn->prepare("SELECT * FROM users WHERE username=? AND password=?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
// 用户名和密码匹配,登录成功
session_start();
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $username;
header("Location: dashboard.php");
} else {
// 用户名或密码不匹配,登录失败
echo "Invalid username or password.";
}
$stmt->close();
$conn->close();
?>
<?php
session_start();
if (!isset($_SESSION['loggedin']) || !$_SESSION['loggedin']) {
header("Location: login.html");
exit();
}
echo "Welcome, " . $_SESSION['username'] . "!";
?>
注意:在实际项目中,为了安全起见,建议使用HTTPS协议,以及对用户密码进行哈希处理。此外,还需要考虑SQL注入等安全问题。