php实现登陆
PHP 实现登录功能
创建登录表单
在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。
<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();
// 假设从数据库获取的用户数据
$valid_users = [
'admin' => password_hash('admin123', PASSWORD_DEFAULT),
'user' => password_hash('user123', PASSWORD_DEFAULT)
];
$username = $_POST['username'] ?? '';
$password = $_POST['password'] ?? '';
if (isset($valid_users[$username]) && password_verify($password, $valid_users[$username])) {
$_SESSION['username'] = $username;
header('Location: dashboard.php');
exit;
} else {
echo '用户名或密码错误';
}
?>
验证会话
在需要登录后才能访问的页面(如 dashboard.php)中,验证用户是否已登录。
<?php
session_start();
if (!isset($_SESSION['username'])) {
header('Location: login_form.html');
exit;
}
echo '欢迎, ' . htmlspecialchars($_SESSION['username']);
?>
数据库集成
如果需要从数据库验证用户,可以使用以下代码示例。
<?php
session_start();
$host = 'localhost';
$dbname = 'your_database';
$username = 'db_username';
$password = 'db_password';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare('SELECT password FROM users WHERE username = ?');
$stmt->execute([$_POST['username']]);
$user = $stmt->fetch();
if ($user && password_verify($_POST['password'], $user['password'])) {
$_SESSION['username'] = $_POST['username'];
header('Location: dashboard.php');
exit;
} else {
echo '用户名或密码错误';
}
} catch (PDOException $e) {
echo '数据库错误: ' . $e->getMessage();
}
?>
密码安全
使用 password_hash() 和 password_verify() 函数确保密码安全存储和验证。
// 注册时哈希密码
$hashed_password = password_hash('user_password', PASSWORD_DEFAULT);
// 登录时验证密码
if (password_verify('input_password', $hashed_password)) {
// 密码匹配
}
注销功能
提供注销功能,清除会话并重定向到登录页面。
<?php
session_start();
session_destroy();
header('Location: login_form.html');
exit;
?>





