PHP面向对象-Session的使用示例

2023-04-29 08:22:31 浏览数 (1)

创建一个简单的登录页面,用户可以在该页面上输入用户名和密码,并且如果用户名和密码正确,则创建一个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,以确保用户完全退出。

php

0 人点赞