php实现登录修改密码
实现登录功能
使用PHP实现登录功能需要验证用户输入的用户名和密码是否与数据库中的记录匹配。创建一个登录表单,提交后验证用户信息。
// 登录表单处理
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
// 数据库查询
$sql = "SELECT * FROM users WHERE username = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$username]);
$user = $stmt->fetch();
// 验证密码
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
header('Location: dashboard.php');
} else {
$error = "用户名或密码错误";
}
}
修改密码功能
修改密码功能需要用户先登录,然后输入旧密码和新密码。验证旧密码正确后更新数据库中的密码记录。
// 修改密码处理
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$old_password = $_POST['old_password'];
$new_password = $_POST['new_password'];
$confirm_password = $_POST['confirm_password'];
// 验证新密码是否一致
if ($new_password != $confirm_password) {
$error = "新密码不匹配";
} else {
// 查询当前用户密码
$sql = "SELECT password FROM users WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$_SESSION['user_id']]);
$user = $stmt->fetch();
// 验证旧密码
if (password_verify($old_password, $user['password'])) {
// 更新密码
$hashed_password = password_hash($new_password, PASSWORD_DEFAULT);
$sql = "UPDATE users SET password = ? WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$hashed_password, $_SESSION['user_id']]);
$success = "密码修改成功";
} else {
$error = "旧密码错误";
}
}
}
安全注意事项
确保使用预处理语句防止SQL注入攻击。密码存储应使用password_hash函数进行哈希处理,验证时使用password_verify函数。
// 密码哈希示例
$hashed_password = password_hash('plain_password', PASSWORD_DEFAULT);
// 密码验证示例
if (password_verify('input_password', $hashed_password)) {
// 密码匹配
}
会话管理
使用PHP的session_start函数管理用户会话,确保用户登录状态持久化。在敏感操作前检查用户是否已登录。
session_start();
if (!isset($_SESSION['user_id'])) {
header('Location: login.php');
exit;
}
前端表单示例
创建登录和修改密码的HTML表单,确保表单使用POST方法提交。

<!-- 登录表单 -->
<form method="post" action="login.php">
<input type="text" name="username" placeholder="用户名" required>
<input type="password" name="password" placeholder="密码" required>
<button type="submit">登录</button>
</form>
<!-- 修改密码表单 -->
<form method="post" action="change_password.php">
<input type="password" name="old_password" placeholder="旧密码" required>
<input type="password" name="new_password" placeholder="新密码" required>
<input type="password" name="confirm_password" placeholder="确认新密码" required>
<button type="submit">修改密码</button>
</form>






