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
$valid_username = 'admin';
$valid_password = 'password123';
$username = $_POST['username'];
$password = $_POST['password'];
if ($username === $valid_username && $password === $valid_password) {
session_start();
$_SESSION['username'] = $username;
header('Location: dashboard.php');
exit();
} else {
echo '无效的用户名或密码';
}
?>
创建受保护的页面
设计一个名为dashboard.php的页面,仅在用户登录后显示内容。使用PHP会话验证用户是否已登录。
<?php
session_start();
if (!isset($_SESSION['username'])) {
header('Location: login_form.html');
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<title>仪表盘</title>
</head>
<body>
<h1>欢迎, <?php echo $_SESSION['username']; ?>!</h1>
<p>这是您的受保护页面内容。</p>
<a href="logout.php">退出登录</a>
</body>
</html>
实现退出功能
创建logout.php文件销毁会话并重定向到登录页面。
<?php
session_start();
session_destroy();
header('Location: login_form.html');
exit();
?>
安全增强措施
在实际部署中,应采取以下安全措施:
- 使用HTTPS保护传输数据
- 对密码进行哈希处理(如
password_hash和password_verify) - 实现CSRF保护
- 设置会话超时
- 使用预处理语句防止SQL注入(如使用PDO或MySQLi)
数据库集成示例
如需连接MySQL数据库验证用户,可修改login.php如下:
<?php
session_start();
$host = 'localhost';
$dbname = 'your_database';
$user = 'db_user';
$pass = 'db_password';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$_POST['username']]);
$user = $stmt->fetch();
if ($user && password_verify($_POST['password'], $user['password'])) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
header('Location: dashboard.php');
exit();
} else {
echo '无效的用户名或密码';
}
} catch (PDOException $e) {
echo "数据库错误: " . $e->getMessage();
}
?>






