首页 > 建站‧营销

PHP代码,用于判断用户是否登录,登录成功方可查看当前页面内容


以下是一套完整的PHP代码,用于判断用户是否登录,登录成功方可查看当前页面内容,其中的用户名、密码和有效期存储在一个txt文件中,以“|”隔开:

1.login.php:

<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 处理登录请求
    $username = $_POST['username'];
    $password = $_POST['password'];

    // 读取存储用户名、密码和有效期的文件
    $file = 'user.txt';
    if (!file_exists($file)) {
        // 文件不存在,提示错误信息
        echo 'Error: User file not found!';
        exit;
    }
    $users = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

    // 遍历用户信息,查找匹配的用户
    $matchUser = null;
    foreach ($users as $user) {
        list($name, $pass, $expiry) = explode('|', $user);
        if ($name === $username && $pass === $password) {
            $matchUser = [
                'username' => $name,
                'password' => $pass,
                'expiry' => $expiry,
            ];
            break;
        }
    }

    if (!$matchUser) {
        // 用户名或密码错误,提示错误信息
        echo 'Error: Invalid username or password!';
        exit;
    }

    // 判断用户是否已经过期
    if (strtotime($matchUser['expiry']) < time()) {
        // 用户已经过期,提示错误信息
        echo 'Error: User has expired!';
        exit;
    }

    // 登录成功,保存用户信息到Session
    $_SESSION['username'] = $matchUser['username'];

    // 跳转到之前的页面
    header('Location: ' . $_SERVER['HTTP_REFERER']);
    exit;
}
?>

2.index.php

<?php
session_start();

// 判断用户是否已经登录
if (!isset($_SESSION['username'])) {
    // 用户未登录,跳转到登录页面
    header('Location: login.php');
    exit;
}

// 读取存储用户名、密码和有效期的文件
$file = 'user.txt';
if (!file_exists($file)) {
    // 文件不存在,提示错误信息
    echo 'Error: User file not found!';
    exit;
}
$users = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

// 遍历用户信息,查找当前登录用户的信息
$currentUser = null;
foreach ($users as $user) {
    list($username, $password, $expiry) = explode('|', $user);
    if ($_SESSION['username'] === $username) {
        $currentUser = [
            'username' => $username,
            'password' => $password,
            'expiry' => $expiry,
        ];
        break;
    }
}

if (!$currentUser) {
    // 未找到当前登录用户的信息,提示错误信息
    echo 'Error: User not found!';
    exit;
}

// 判断当前用户是否已经过期
if (strtotime($currentUser['expiry']) < time()) {
    // 用户已经过期,跳转到登录页面
    header('Location: login.php');
    exit;
}

// 用户已经登录且未过期,可以查看当前页面内容
echo 'Welcome, ' . $currentUser['username'] . '!';
?>

<!-- 页面内容 -->
<html>
<head>
    <title>Homepage</title>
</head>
<body>
    <h1>Welcome to Homepage</h1>
    <p>Only logged in users can see this content.</p>
</body>
</html>

3. passwords.txt

在passwords.txt文件中,您可以添加以下内容:

user|password1|2024-01-01
user|password2|2024-02-01
user|password3|2024-03-01

本文链接:https://www.zhanque.net/cms/3092.html