php实现登陆功能
创建登录表单
使用HTML构建一个简单的登录表单,包含用户名和密码输入框。表单的action属性指向处理登录的PHP脚本,method设置为POST。
<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>
处理登录请求
创建一个名为login.php的文件,用于处理表单提交的数据。验证用户输入并检查凭据是否匹配数据库中的记录。
<?php
session_start();
// 假设数据库连接已建立
$db = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
$username = $_POST['username'];
$password = $_POST['password'];
// 防止SQL注入
$stmt = $db->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(':username', $username);
$stmt->execute();
$user = $stmt->fetch();
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
header("Location: dashboard.php");
exit();
} else {
echo "用户名或密码错误";
}
?>
密码哈希存储
在注册或修改密码时,使用password_hash()函数对密码进行哈希处理,确保安全性。
$hashed_password = password_hash($plain_password, PASSWORD_DEFAULT);
会话管理
登录成功后,使用$_SESSION存储用户信息,并在需要验证登录状态的页面检查会话是否存在。
session_start();
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit();
}
注销功能
提供一个注销按钮或链接,销毁当前会话并重定向到登录页面。
session_start();
session_destroy();
header("Location: login.php");
exit();
安全增强措施
使用HTTPS协议传输数据,防止中间人攻击。对敏感操作添加CSRF令牌验证。
// 生成CSRF令牌
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
错误处理
在登录失败时提供友好的错误提示,但避免泄露系统详细信息。
if ($login_failed) {
$_SESSION['error'] = "用户名或密码错误";
header("Location: login.php");
exit();
}
记住我功能
如果需要实现“记住我”功能,可以使用安全的Cookie存储持久登录令牌。

if ($remember_me) {
$token = bin2hex(random_bytes(32));
setcookie('remember_token', $token, time() + 86400 * 30, '/', '', true, true);
// 将令牌存入数据库并与用户关联
}






