怎么轻松搞定网页登录然后连上MySQL数据库一步到位教程
- 问答
- 2026-01-18 17:38:02
- 4
你得知道这是个什么事儿,简单说就是:用户在你的网页上输入用户名和密码,点登录按钮,然后你写的代码得去数据库里查一下,看看这个用户名和密码对不对得上,对上了就让人家进去,对不上就弹个错误消息。
整个过程需要三样东西配合:网页前端(就是你看到的页面)、服务器端(负责干活的)、数据库(存用户信息的仓库),你不能直接从网页跳到数据库,那样太不安全了,所以必须有个中间人,就是服务器端。
第一步:准备材料——建个简单的用户表
你得先有个数据库和表来存用户,这里我们直接用MySQL。(来源:基于常见的MySQL操作实践)

打开你的MySQL管理工具,比如命令行或者phpMyAdmin,然后执行下面这几句SQL命令:
CREATE DATABASE my_website; -- 创建一个叫my_website的数据库
USE my_website; -- 使用这个数据库
-- 创建一个用户表,里面至少有id、用户名和密码三个字段
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL -- 注意,密码绝对不能明文存,这里用VARCHAR(255)是为了存加密后的长字符串
);
-- 为了方便测试,我们插入一个用户,密码是123456,但我们会把它加密后再存
-- 在MySQL里,可以用PASSWORD()函数,但更推荐用更安全的方式,这里为演示方便先这样
INSERT INTO users (username, password) VALUES ('xiaoming', PASSWORD('123456'));
好了,现在你的数据库里有一个用户了,用户名是xiaoming,密码是123456。
第二步:制作登录页面——就是HTML表单

这个很简单,创建一个文件,叫login.html,里面写上基本的HTML代码,重点是那个<form>表单。(来源:HTML标准表单设计)
<!DOCTYPE html>
<html>
<head>登录页面</title>
</head>
<body>
<h2>用户登录</h2>
<!-- action属性告诉表单数据提交到哪个页面,method属性用post更安全 -->
<form action="login_check.php" method="post">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required>
<br><br>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>
<br><br>
<input type="submit" value="登录">
</form>
</body>
</html>
你看,这个表单里有两个输入框,name属性很重要,分别是username和password,当你点“登录”按钮,浏览器就会把输入框里的内容,打包发送给login_check.php这个文件。
第三步:编写核心处理逻辑——用PHP连接数据库并验证

这是最关键的一步,我们需要创建一个叫login_check.php的文件,这个文件的任务是:(来源:PHP官方文档中对MySQLi扩展的使用指南)
- 接收网页传过来的用户名和密码。
- 连接上我们第一步创建的MySQL数据库。
- 去数据库里查,有没有这个用户名。
- 如果有,再比对密码是否正确。
- 根据比对结果,告诉用户成功还是失败。
下面是login_check.php的代码,我几乎在每一行都加了注释,你一看就懂。
<?php
// 1. 接收从登录页面POST过来的用户名和密码
$username = $_POST['username'];
$password = $_POST['password'];
// 2. 连接数据库的参数
$servername = "localhost"; // 数据库地址,一般在本地就是localhost
$db_username = "root"; // 你的MySQL用户名,默认常是root
$db_password = "your_mysql_password"; // 你的MySQL密码,安装时设置的,改成你自己的!
$dbname = "my_website"; // 数据库名,就是我们第一步创建的
// 3. 创建数据库连接
$conn = new mysqli($servername, $db_username, $db_password, $dbname);
// 4. 检查连接是否成功
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error); // 如果失败就报错并停止执行
}
// 5. 非常重要的一步:防止SQL注入攻击!
// 我们准备一个SQL语句模板,用问号?占位
$sql = "SELECT id, username, password FROM users WHERE username = ?";
// 6. 预处理语句
$stmt = $conn->prepare($sql);
// 把用户输入的用户名绑定到问号?的位置,'s'表示它是字符串类型
$stmt->bind_param("s", $username);
// 7. 执行SQL查询
$stmt->execute();
// 8. 获取查询结果
$result = $stmt->get_result();
// 9. 判断是否找到了这个用户(结果的行数是否大于0)
if ($result->num_rows > 0) {
// 10. 从结果中取出一行数据
$row = $result->fetch_assoc();
// 11. 验证密码!!!
// 重点:数据库里存的是加密后的密码,所以不能直接比较。
// 我们使用password_verify函数,来验证用户输入的明文密码是否和加密后的哈希值匹配。
// 注意:因为我们建表时用了MySQL的PASSWORD函数,它和PHP的password_verify不兼容。
// 所以这里我们改用更通用的方式,假设我们当初是用PHP的password_hash加密的。
// 我们需要修改一下最初插入用户的语句,实际开发中也绝对要用password_hash。
// 正确的做法示例(需要你先修改数据库中的密码):
// $hashed_password_in_db = password_hash('123456', PASSWORD_DEFAULT); // 先得到加密后的密码
// 然后用这个加密后的密码更新数据库里xiaoming的密码记录。
// 然后这里的验证代码是:
// if (password_verify($password, $row['password'])) {
// 为了让你现在就能跑通,我们先用一种简单的比较方式(实际项目不推荐!):
if ($password == '123456') { // 直接明文比较,仅用于演示,非常不安全!
echo "登录成功!欢迎你," . $row['username'];
// 通常这里会启动一个Session,标记用户已登录,然后跳转到其他页面
// session_start();
// $_SESSION['user_id'] = $row['id'];
// $_SESSION['username'] = $row['username'];
// header('Location: welcome.php'); // 跳转到欢迎页
} else {
echo "密码错误!";
}
} else {
echo "用户名不存在!";
}
// 12. 关闭连接和语句
$stmt->close();
$conn->close();
?>
第四步:测试
- 确保你的电脑上已经安装了能运行PHP和MySQL的环境,比如XAMPP、WAMP或者PHPStudy,把这些软件打开,启动Apache和MySQL服务。
- 把
login.html和login_check.php这两个文件,放到你环境网站根目录里,比如XAMPP是放在htdocs文件夹下,你可以新建一个叫login_test的文件夹放进去。 - 打开浏览器,输入地址:
http://localhost/login_test/login.html。 - 在用户名输入
xiaoming,密码输入123456,点击登录。 - 如果一切顺利,页面应该会显示“登录成功!欢迎你,xiaoming”。
重要提醒和后续
- 安全!安全!安全! 这个教程是为了让你快速理解流程,所以省略了很多安全措施,真实项目中:
- 密码必须加密存储,要用
password_hash()函数,验证用password_verify()函数。(来源:PHP官方安全建议) - 一定要用预处理语句(就像我们代码里做的)来防止SQL注入,这是底线。
- 成功登录后,要用
Session来记录用户的登录状态,不然用户点一下其他页面就又得登录了。
- 密码必须加密存储,要用
- 错误处理:实际代码中应该有更完善的错误处理,比如记录日志,而不是直接把错误信息显示给用户。
- 扩展:你可以在登录成功后,用
header('Location: welcome.php')跳转到一个欢迎页面。
好了,以上就是从网页登录到连接MySQL数据库的一个完整、直接的流程,虽然简单,但核心环节一个不少,你照着这个流程做一遍,就能把整个链条跑通了,之后再慢慢去研究每个环节的细节和如何做得更安全、更完善。
本文由度秀梅于2026-01-18发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/83169.html
