以下是一套完整的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