php实现登录页面
PHP 登录页面实现
数据库准备 创建一个用户表用于存储用户信息,例如:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE
);
HTML 表单 创建登录表单页面(login.html):
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<h2>Login Form</h2>
<form action="login.php" method="post">
<label>Username:</label>
<input type="text" name="username" required><br><br>
<label>Password:</label>
<input type="password" name="password" required><br><br>
<input type="submit" value="Login">
</form>
</body>
</html>
PHP 处理脚本 创建登录处理脚本(login.php):
<?php
session_start();
$host = "localhost";
$dbusername = "root";
$dbpassword = "";
$dbname = "your_database";
$conn = new mysqli($host, $dbusername, $dbpassword, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE username = '$username'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
if (password_verify($password, $row['password'])) {
$_SESSION['user_id'] = $row['id'];
$_SESSION['username'] = $row['username'];
header("Location: welcome.php");
} else {
echo "Invalid password";
}
} else {
echo "User not found";
}
$conn->close();
?>
安全增强措施 使用预处理语句防止SQL注入:

$stmt = $conn->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();
密码哈希 在注册时使用password_hash()安全存储密码:
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
会话管理 创建欢迎页面(welcome.php)验证会话:
<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header("Location: login.html");
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<h2>Welcome, <?php echo $_SESSION['username']; ?></h2>
<a href="logout.php">Logout</a>
</body>
</html>
注销功能 创建注销脚本(logout.php):

<?php
session_start();
session_unset();
session_destroy();
header("Location: login.html");
exit();
?>
验证码功能 添加验证码可防止暴力破解:
// 在登录表单中添加
<img src="captcha.php" />
<input type="text" name="captcha" required>
// captcha.php 生成验证码图片
session_start();
$code = rand(1000, 9999);
$_SESSION['captcha'] = $code;
// 使用GD库生成图片
记住我功能 使用cookie实现持久登录:
if (isset($_POST['remember'])) {
setcookie('username', $username, time()+60*60*24*30);
setcookie('password', $password, time()+60*60*24*30);
}
错误处理 显示友好的错误信息:
if (empty($username) || empty($password)) {
$error = "All fields are required";
}
HTTPS 安全 确保在生产环境中使用HTTPS协议传输登录数据。






