如何实现登录表单的有效性验证并储存在数据库中 (登录表单验证数据库)
随着互联网的发展,越来越多的网站需要用户进行登录才能使用其提供的服务。在登录时,为了保护用户隐私和信息安全,需要对登录表单进行有效性验证。这篇文章将介绍如何通过使用PHP和MySQL实现登录表单的有效性验证,并将用户信息储存在数据库中,以保证数据安全。
一. 前端登录表单
前端页面为用户提供一个登录表单,通常包括以下几个要素:用户名、密码、验证码等。在这个表单中可以加入一些前端验证,如邮箱格式验证、密码长度验证,这些验证是为了避免用户的输入错误,也可以通过js代码实现。
然而,前端验证的缺点在于易于被用户绕过,所以必须使用后端服务器脚本来进行有效性验证。
二. 后台验证
后台验证的原理是通过服务器脚本对用户输入的内容进行判断和处理。通过后台页面,PHP文件接收前端提交的数据,然后验证其有效性。接下来,我们将使用PHP进行详细讲解。
2.1 PHP处理输入数据
用户填写了表单后,PHP代码将收到一系列键值对。在登录表单中,我们将会获得两个重要参数:用户名和密码。通过这些参数,我们可以连接到MySQL数据库,然后验证用户名和密码是否跟数据库中的记录一致。
在下面的例子中,我们将构造一段PHP代码来校验输入信息的正确性。
“`
// 判断是否有POST请求提交
if ($_SERVER[“REQUEST_METHOD”] == “POST”) {
// 获取表单提交的数据
$username = test_input($_POST[“username”]);
$password = test_input($_POST[“password”]);
// 注册用户
register_user($username, $password);
// 跳转到成功页面
header(‘Location: success.php’);
exit();
}
// 数据清洗
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
function register_user($username, $password) {
// 连接到MySQL数据库
$conn = mysqli_connect(“localhost”, “username”, “password”, “database”);
// 防止SQL注入
$username = mysqli_real_escape_string($conn, $username);
$password = mysqli_real_escape_string($conn, $password);
// 使用SHA1加密密码
$hashed_password = sha1($password);
// 构造SQL语句
$sql = “INSERT INTO users (username, password) VALUES (‘”.$username.”‘, ‘”.$hashed_password.”‘)”;
// 执行SQL语句
mysqli_query($conn, $sql);
// 关闭数据库连接
mysqli_close($conn);
}
?>
“`
如上所示,在登录表单中,我们会进行如下处理:
1. 检查是否有POST请求提交;
2. 清洗用户提交的数据,以便确保其正确性和安全性;
3. 连接到MySQL数据库;
4. 防止SQL注入;
5. 使用SHA1加密密码;
6. 构造SQL语句;
7. 执行SQL语句;
8. 关闭连接。
三. 储存在数据库中
接下来,我们需要将用户信息存储在数据库中。对于区别于单纯的表单提交数据,储存到数据库需要更多的功能。在这个例子中,我们需要存储用户名和密码。从可靠性和安全性观点来看,我们需要对密码进行加密,并且禁止使用用户的输入作为SQL语句的命令。这里使用SHA1算法加密用户的密码,这是一种安全可靠的加密算法。
3.1 数据库表设计
我们需要定义一个表,以存储我们的用户数据。
“`
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
“`
在上面的例子中,我们定义了一个名为“users”的表,该表具有三个列:ID、用户名和密码。其中ID是一个自增的、唯一的主键。
3.2 数据库连接
下面是连接到数据库的代码:
“`
// 连接到MySQL数据库
$conn = mysqli_connect(“localhost”, “username”, “password”, “database”);
“`
用户名、密码、数据库名称由自己设置,连接至数据库可以对表中的数据进行操作,建议将数据库连接字符串分开存放,造成安全隐患。
3.3 执行SQL语句
下面是提交到数据库的代码:
“`
$sql = “INSERT INTO users (username, password) VALUES (‘”.$username.”‘, ‘”.$hashed_password.”‘)”;
mysqli_query($conn, $sql);
“`
执行SQL语句时,将当前用户名和密码进行存储。
3.4 关闭数据库连接
需要显式地关闭数据库连接。虽然不关闭数据库连接不会影响运行,但在长时间运行和使用高并发的情况下,可能会导致服务器资源耗尽。
“`
mysqli_close($conn);
“`
四. 结论
本文介绍了如何使用PHP和MySQL实现登录表单的有效性验证,并将用户信息储存在数据库中的方法。我们通过处理前端提交的数据,连接到数据库,然后对用户名和密码进行验证并存储到数据库中,以保证用户名和密码详情安全可靠。读者可以借鉴上面的代码,完成代码的实现。