Я новичок в PHP и надеюсь, что кто-то может мне помочь.PHP: Как проверить, содержит ли ссылка URL, чтобы предотвратить перенаправление (остальная часть кода работает)
Я пытаюсь охватить следующие сценарии в заголовочном файле, который включен на всех моих страницах:
- IF переменная сеанса «
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 вместо из двух строк?
Большое спасибо за любую помощь, Майк
Конечно, вы можете комбинировать 'if'. При этом следует учитывать недостаток читаемости. Параметры URL-адресов в электронных письмах иногда сдерживаются неявными разрывами строк (автоматическое разбиение на 72 символа или менее на некоторых клиентах для обычных текстовых сообщений). – mario