怎么登录php数据库代码
- 数据库
- 2025-07-15
- 3799
mysqli_connect()或
PDO,提供主机、用户名、密码和数据库名,再验证用户输入并执行查询
使用PHP登录数据库并编写登录代码,需要遵循一定的步骤和最佳实践,以下是详细的实现过程,包括连接数据库、创建登录表单、处理登录请求以及会话管理等关键环节。
准备工作
-
环境配置:确保已安装PHP、Web服务器(如Apache)和数据库(如MySQL),推荐使用集成环境工具如XAMPP或WAMP。
-
创建数据库和用户表:在数据库中创建一个用于存储用户信息的表,通常包含
id、username和password字段,示例SQL语句如下:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL
);
连接数据库
PHP提供了多种方式连接数据库,常用的有mysqli和PDO,以下分别介绍两种方法的连接代码。
使用mysqli连接
<?php
$servername = "localhost";
$username = "root"; // 数据库用户名
$password = "password"; // 数据库密码
$dbname = "myDB"; // 数据库名
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检查连接
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}
echo "连接成功";
// 关闭连接
mysqli_close($conn);
?>
使用PDO连接
<?php
$host = 'localhost';
$dbname = 'myDB';
$username = 'root';
$password = 'password';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "连接成功";
} catch (PDOException $e) {
die("连接失败: " . $e->getMessage());
}
// 关闭连接
$pdo = null;
?>
创建登录表单
登录表单是用户输入用户名和密码的界面,通常使用HTML编写,并将表单的action属性指向处理登录请求的PHP脚本(如login.php)。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">登录</title>
</head>
<body>
<form action="login.php" method="post">
<div>
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required>
</div>
<div>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>
</div>
<button type="submit">登录</button>
</form>
</body>
</html>
处理登录请求
在login.php中,需要获取用户提交的用户名和密码,并在数据库中验证,如果验证成功,则建立会话并跳转到欢迎页面;否则,提示错误信息。
使用mysqli处理登录
<?php
session_start();
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检查连接
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// 获取并过滤用户输入
$user = mysqli_real_escape_string($conn, $_POST['username']);
$pass = mysqli_real_escape_string($conn, $_POST['password']);
// 查询数据库
$sql = "SELECT FROM users WHERE username='$user' AND password='$pass'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// 登录成功,设置会话变量
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $user;
header("Location: welcome.php"); // 跳转到欢迎页
} else {
// 登录失败
echo "无效的用户名或密码";
}
}
mysqli_close($conn);
?>
使用PDO处理登录(推荐,支持预处理语句)
<?php
session_start();
$host = 'localhost';
$dbname = 'myDB';
$username = 'root';
$password = 'password';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$user = $_POST['username'];
$pass = $_POST['password'];
// 使用预处理语句防止SQL注入
$stmt = $pdo->prepare("SELECT FROM users WHERE username=? AND password=?");
$stmt->execute([$user, $pass]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if ($user) {
// 登录成功,设置会话变量
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $user['username'];
header("Location: welcome.php"); // 跳转到欢迎页
} else {
// 登录失败
echo "无效的用户名或密码";
}
}
} catch (PDOException $e) {
echo "登录错误: " . $e->getMessage();
}
// 关闭连接
$pdo = null;
?>
会话管理与安全措施
- 会话管理:使用
session_start()启动会话,并通过$_SESSION数组存储用户状态,在需要用户登录的页面顶部添加会话检查代码:
<?php
session_start();
if (!isset($_SESSION['loggedin']) || !$_SESSION['loggedin']) {
header("Location: login.php"); // 未登录用户重定向到登录页
exit;
}
?>
-
密码加密:存储密码时,应使用哈希算法(如
password_hash())加密,登录时使用password_verify()验证,修改注册和登录代码如下:-
注册时加密密码:
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
-
登录时验证密码:

if (password_verify($pass, $user['password'])) { // 密码正确 }
-
-
防止SQL注入:推荐使用PDO的预处理语句或mysqli的
prepare()方法,避免直接拼接SQL语句。$stmt = $pdo->prepare("SELECT FROM users WHERE username=?"); $stmt->execute([$username]);
完整示例流程
-
数据库连接文件(db.php):
<?php $host = 'localhost'; $dbname = 'myDB'; $username = 'root'; $password = 'password'; try { $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("数据库连接失败: " . $e->getMessage()); } ?> -
登录表单(login.html):见上文HTML代码。
-
处理登录的PHP脚本(login.php):见上文PDO示例代码。

-
欢迎页面(welcome.php):
<?php session_start(); if (!isset($_SESSION['loggedin']) || !$_SESSION['loggedin']) { header("Location: login.php"); exit; } echo "欢迎, " . htmlspecialchars($_SESSION['username']) . "!"; ?>
常见问题与解答(FAQs)
Q1:如何确保密码的安全性?
A1:在注册时,应使用password_hash()函数对用户密码进行哈希处理,并将哈希值存储到数据库中,登录时,使用password_verify()函数验证用户输入的密码与存储的哈希值是否匹配,这样可以有效防止密码泄露,即使数据库被攻破,攻击者也无法直接获取明文密码,示例代码如下:
// 注册时加密密码
$hashed_password = password_hash($_POST['password'], PASSWORD_DEFAULT);
// 登录时验证密码
if (password_verify($_POST['password'], $user['password'])) {
// 密码
