Здравствуйте, я пишу сценарий страницы профиля, в этом сценарии я проверяю значение входящей переменной $ _GET и проверяю, что это целое число, затем я проверяю это значение по значению $ _SESSION на подтвердите, что они могут получить доступ только к своим учетным записям. Код выглядит следующим образом:
// validate $_GET field
if(isset($_GET['identity']) && filter_var($_GET['identity'], FILTER_VALIDATE_INT, array('min_range' => 1))) {
if(isset($_SESSION['user_identity']) && ((int)$_SESSION['user_identity'] === (int)$_GET['identity'])) { // if session exists and is === $_GET['identity']
// Proceed with code
Это отлично работает, например, если я пытаюсь передать '0', '2-2', 'abc' или не передать значение в качестве значения $ _GET, запрос правильно завершится ошибкой и перенаправит их на главную страница.
Затем я попытался изменить свой файл .htaccess, чтобы сопоставить URL-адреса с 'profile / 1', просто чтобы привести его в порядок.
RewriteRule ^profile$ profile.php
RewriteRule ^profile/([0-9]+)$ profile.php?identity=$1 [NC,L]
Я обнаружил, что страница больше не выполняет перенаправление с использованием указанных выше недопустимых параметров $ _GET. Он просто пытается найти 'profile / abc.
Кто-нибудь знает почему?