php实现登陆验证
PHP 登录验证实现方法
创建登录表单
使用HTML创建一个简单的登录表单,包含用户名和密码字段。
<form action="login.php" method="post">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>
<button type="submit">登录</button>
</form>
数据库连接
建立与数据库的连接,通常使用MySQLi或PDO。
$host = 'localhost';
$dbname = 'your_database';
$username = 'db_username';
$password = 'db_password';
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
验证用户输入
处理表单提交,验证用户输入并防止SQL注入。
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = trim($_POST['username']);
$password = trim($_POST['password']);
$stmt = $conn->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(':username', $username);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);
}
密码验证
使用password_verify()函数验证密码哈希。

if ($user && password_verify($password, $user['password'])) {
session_start();
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
header('Location: dashboard.php');
exit;
} else {
$error = "无效的用户名或密码";
}
会话管理
使用PHP会话保持用户登录状态。
session_start();
if (!isset($_SESSION['user_id'])) {
header('Location: login.php');
exit;
}
密码哈希
在用户注册时使用password_hash()安全存储密码。

$hashedPassword = password_hash($plainPassword, PASSWORD_DEFAULT);
安全增强措施
实现CSRF保护和输入过滤提高安全性。
if (empty($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
die('CSRF验证失败');
}
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
错误处理
提供友好的错误消息并记录安全事件。
try {
// 数据库操作代码
} catch (PDOException $e) {
error_log($e->getMessage());
$error = "系统错误,请稍后再试";
}
退出功能
实现安全的会话销毁功能。
session_start();
session_unset();
session_destroy();
header('Location: login.php');
exit;






