我是 PHP 新手,希望有人可以帮助我。
我试图在我所有页面中包含的头文件中涵盖以下场景:
- 如果会话变量“
status
”未设置并且页面名称不是“login
”或“user
”,则重定向到登录页面。 - 如果会话变量“
status
”未设置且页面名称为“user
”且变量“resetToken
”未设置则重定向到登录页面。
到目前为止,当我从浏览器访问它们时,我有以下适用于所有页面的内容,但是当我使用来自如下电子邮件的链接时,即使链接包含变量“ resetToken
”,我仍然会被重定向:
示例链接:https ://www.myurl.com/user.php?resetToken=abcde
我的 PHP(在标题中包含):
$baseURL = "https://www.myurl.com";
$pageURL = basename($_SERVER["REQUEST_URI"]);
$pageName = pathinfo(parse_url($pageURL, PHP_URL_PATH), PATHINFO_FILENAME);
if( (!isset($_SESSION["status"])) && ($pageName != "login") && ($pageName != "user") ){
header("Location: " . $baseURL . "/login.php");
exit;
}
if( (!isset($_SESSION["status"])) && ($pageName == "user") && (!isset($_GET["resetToken"])) ){
header("Location: " . $baseURL . "/login.php");
exit;
}
我对此有两个问题:
- 通过电子邮件链接访问页面时 $_GET 不起作用还是我必须在此处更改其他内容?
- 有没有办法将这些检查组合在一个 IF 语句中,而不是连续两个?
非常感谢您的帮助,迈克