学会用PHP搭建本地登录表单:从基础到安全防护全攻略

在互联网时代,网站的用户登录功能是必不可少的。PHP作为一种流行的服务器端脚本语言,常被用于构建动态网站。本文将带你从零开始,学习如何使用PHP搭建一个本地登录表单,并探讨如何加强其安全防护。
一、搭建基础登录表单
1. 准备环境
首先,确保你的电脑上安装了PHP环境和数据库(如MySQL)。你可以使用XAMPP、WAMP或MAMP等集成开发环境来简化安装过程。
2. 创建数据库和表
使用数据库管理工具(如phpMyAdmin)创建一个名为
users
的数据库,并在其中创建一个名为
login
的表,包含用户名、密码等字段。
CREATE TABLE login (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL
);
3. 编写PHP代码
创建一个名为
login.php
的文件,并编写以下代码:
connect_error) {
die(“连接失败: ” . $conn->connect_error);
}

// 检查是否有用户提交表单
if ($_SERVER[“REQUEST_METHOD”] == “POST”) {
$username = $conn->real_escape_string($_POST[‘username’]);
$password = $conn->real_escape_string($_POST[‘password’]);

// 查询数据库
$sql = “SELECT * FROM login WHERE username = ‘$username’ AND password = ‘$password’”;
$result = $conn->query($sql);

if ($result->num_rows > 0) {
echo “登录成功!”;
} else {
echo “用户名或密码错误。”;
}
}

$conn->close();
?>
4. 创建HTML表单
创建一个名为
login.html
的文件,并编写以下代码:



登录表单








二、安全防护
1. 防止SQL注入
在上述代码中,我们已经使用了
$conn->real_escape_string()
函数来防止SQL注入。此外,还可以使用预处理语句来进一步提高安全性。
// 使用预处理语句
$stmt = $conn->prepare(“SELECT * FROM login WHERE username = ? AND password = ?”);
$stmt->bind_param(“ss”, $username, $password);
$stmt->execute();
$result = $stmt->get_result();
2. 密码加密
为了保护用户密码,建议在数据库中存储加密后的密码。可以使用PHP内置的
password_hash()
函数来生成密码哈希。
// 注册用户时
$passwordHash = password_hash($password, PASSWORD_DEFAULT);
$sql = “INSERT INTO login (username, password) VALUES (?, ?)”;
$stmt = $conn->prepare($sql);
$stmt->bind_param(“ss”, $username, $passwordHash);
$stmt->execute();
3. 防止CSRF攻击
为了防止CSRF攻击,可以在表单中添加一个隐藏字段,用于存储会话ID。