.htaccess и фильтрация $ _GET

Здравствуйте, я пишу сценарий страницы профиля, в этом сценарии я проверяю значение входящей переменной $ _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.

Кто-нибудь знает почему?

5
задан Michael Petrotta 25 October 2011 в 02:29
поделиться