php实现登录pdo
PHP 使用 PDO 实现登录功能
数据库连接配置
创建 config.php 文件存储数据库连接信息:
<?php
$host = 'localhost';
$dbname = 'your_database';
$username = 'your_username';
$password = 'your_password';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
die("Connection failed: " . $e->getMessage());
}
?>
用户登录表单
创建 login.php 文件包含登录表单:
<form action="authenticate.php" method="post">
<input type="text" name="username" placeholder="Username" required>
<input type="password" name="password" placeholder="Password" required>
<button type="submit">Login</button>
</form>
验证用户凭证
创建 authenticate.php 处理登录验证:
<?php
require 'config.php';
$username = $_POST['username'];
$password = $_POST['password'];
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(':username', $username);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if ($user && password_verify($password, $user['password'])) {
session_start();
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
header("Location: dashboard.php");
} else {
echo "Invalid credentials";
}
?>
密码哈希处理
注册时应使用 password_hash() 存储密码:
$hashedPassword = password_hash($plainPassword, PASSWORD_DEFAULT);
会话管理
创建 dashboard.php 显示受保护内容:
<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit;
}
?>
<h1>Welcome, <?php echo $_SESSION['username']; ?></h1>
安全注意事项
使用预处理语句防止 SQL 注入 验证所有用户输入数据 设置适当的会话过期时间 对敏感操作使用 CSRF 令牌 考虑实现登录尝试限制
完整示例结构
/login.php # 登录表单
/authenticate.php # 验证逻辑
/dashboard.php # 受保护页面
/logout.php # 注销脚本
/config.php # 数据库配置
注销实现
创建 logout.php 结束会话:

<?php
session_start();
session_unset();
session_destroy();
header("Location: login.php");
?>






