创建一个简单的登录页面,用户可以在该页面上输入用户名和密码,并且如果用户名和密码正确,则创建一个Session并将用户重定向到一个受保护的页面。在受保护的页面上,用户可以查看他们的用户名,并且可以使用一个链接来注销并删除Session。
代码语言:javascript复制<?php
session_start();
// 检查是否已经登录,如果是,则重定向到受保护的页面
if (isset($_SESSION['username'])) {
header('Location: protected.php');
exit();
}
// 如果用户提交了表单,则尝试登录
if (isset($_POST['username']) && isset($_POST['password'])) {
$username = $_POST['username'];
$password = $_POST['password'];
// 这里需要验证用户名和密码是否正确,这里只是一个简单的示例
if ($username === 'john' && $password === 'password') {
// 登录成功,创建Session并重定向到受保护的页面
$_SESSION['username'] = $username;
header('Location: protected.php');
exit();
} else {
// 登录失败,显示错误消息
$error = 'Invalid username or password';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<?php if (isset($error)) { echo "<p>$error</p>"; } ?>
<form method="post" action="">
<label for="username">Username:</label>
<input type="text" name="username" id="username"><br><br>
<label for="password">Password:</label>
<input type="password" name="password" id="password"><br><br>
<input type="submit" value="Login">
</form>
</body>
</html>
在上面的代码中,我们首先检查是否已经创建了Session。如果是,则将用户重定向到受保护的页面。否则,我们检查是否提交了表单。如果是,则获取用户名和密码,并验证它们是否正确。如果是,则创建一个Session并将用户重定向到受保护的页面。否则,我们显示一个错误消息。
在登录表单中,我们使用HTTP POST方法提交用户名和密码。如果用户名和密码正确,则在服务器端创建一个Session。我们可以使用$_SESSION全局变量来访问Session中的值。在这个示例中,我们将用户名存储在Session中。
以下是受保护的页面的代码,其中显示了用户名和一个链接,该链接可以注销并删除Session:
代码语言:javascript复制<?php
session_start();
// 检查是否已经登录,如果没有,则重定向到登录页面
if (!isset($_SESSION['username'])) {
header('Location: login.php');
exit();
}
// 如果用户点击了注销链接,则删除Session并重定向到登录页面
if (isset($_GET['logout'])) {
session_unset();
session_destroy();
header('Location: login.php');
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Protected</title>
</head>
<body>
<h1>Protected</h1>
<p>Welcome, <?php echo $_SESSION['username']; ?>!</p>
<p><a href="?logout=1">Logout</a></p>
</body>
</html>
在受保护的页面中,我们首先判断用户是否已经登录,如果没有,我们将用户重定向到登录页面。如果用户已经登录,我们将显示用户的用户名并提供一个链接,该链接可以注销并删除Session。
当用户点击注销链接时,我们调用session_unset()和session_destroy()函数来删除Session,并将用户重定向到登录页面。session_unset()函数将删除Session中的所有变量,而session_destroy()函数将彻底删除Session。注意,删除Session不会删除存储在浏览器中的Cookie。因此,我们还需要删除存储在浏览器中的Cookie,以确保用户完全退出。