我在 php 中创建了一个名为 index.php 的登录页面。现在,当用户登录时,它会重定向到 mypage.php。登录工作正常。但即使没有登录,当我输入 mypage.php 的 url 时,mypage.php 也会打开。我希望用户必须登录才能看到 mypage.php,如果他在浏览器中更改了 url,则应该触发错误消息。该怎么办?
1.localhost/index.php 2.localhost/mypage.php
在 index.php 中,一旦用户成功登录,设置会话。就像$_SESSION['login'] = true;
重定向之前一样。如果登录无效,请使用$_SESSION['login'] = false;
不要忘记在页面顶部启动会话。session_start();
在 mypage.php 中,检查是否设置了该会话。如果未设置,则抛出错误,否则显示页面。
session_start();
if(isset($_SESSION['login']) && $_SESSION['login'] == true) {
echo 'You are welcome';
} else {
echo 'redirecting to login page';
header('Location: index.php');
exit;
}
您如何存储“登录”状态?
您需要让 mypage.php 检查由 index.php 成功登录过程设置的变量。
你能把你的代码贴在这里,我可以看看
为了使登录正常工作,您的“安全”页面(我使用该术语是因为没有什么是真正安全的)需要有某种条件验证。换句话说,您需要有某种方法来确定用户是否已登录。
在 PHP 中执行此操作的一种简单方法是在session
处理用户凭据时设置一个变量。例如:
当用户成功登录时,设置一个会话变量,如下所示:
$_SESSION['isLoggedIn'] = true;
然后在 mypage.php 检查变量是否设置:
if(!isset($_SESSION['isLoggedIn']) || $_SESSION['isLoggedIn'] != true) {
header("Location: index.php");
exit;
}
另请注意,如果您使用会话session_start();
作为所有文件的第一行,则必须这样做。这允许$_SESSION
在当前页面上读取在单独页面上设置的变量。
希望这可以帮助。