2011-10-14 14 views
5

Witam Piszę skrypt strony profilu, w tym skrypcie sprawdzam wartość przychodzącej zmiennej $ _GET i sprawdzam, czy jest ona liczbą całkowitą, następnie sprawdzam poprawność tej wartości względem wartości $ _SESSION do potwierdź, że mają dostęp tylko do swoich kont. Kod wygląda następująco:

// 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 

Działa to dobrze, na przykład gdy próbuję przekazać „0”, „2-2”, „abc” lub żadnej wartości jako wartości $ _GET zapytanie poprawnie zawodzi i przekierowania do strony głównej.

Próbowałem zmienić mój plik .htaccess, aby odwzorować adresy URL na "profil/1" tylko po to, aby je uporządkować.

RewriteRule ^profile$ profile.php 
RewriteRule ^profile/([0-9]+)$ profile.php?identity=$1 [NC,L] 

Co znalazłem teraz to, że strona nie przekierowuje więcej przy użyciu tych niepoprawnych parametrów $ _GET powyżej. Po prostu próbuje znaleźć "profil/abc".

Czy ktoś wie, dlaczego?

Odpowiedz

10

Używam tego i działa dla mnie:

RewriteEngine On 
RewriteBase/
RewriteRule ^profile$ profile.php 
RewriteRule ^profile/([a-z0-9\-]+)$ profile.php?identity=$1 [NC,L,QSA] 

Teraz, jak nie masz profile/abc? jeśli spróbujesz przekazać litery w regule, to nie będzie działać, ponieważ podasz tylko numery ([0-9]+). Jeśli chcesz przekazać listy, musisz użyć:

RewriteRule ^profile/([a-z0-9\-]+)/?$ profile.php?identity=$1 [NC,L,QSA] 
+0

Dzięki, wypróbuję Twoje reguły. Nie mam pojęcia, musi to mieć coś wspólnego z moimi regułami .htacces, ponieważ instrukcje php jawnie wykluczają wszystko, co nie jest === liczbą całkowitą i przekazanie $ _GET w niezamaskowanych adresach URL wyrzuca wszystko inne. – Jonnny

+0

ok, daj mi znać, jeśli potrzebujesz dodatkowej pomocy. –

+0

Po prostu próbowałem, nadal otrzymuję taki sam wynik. Jakie to dziwne, może to dziwactwo w moim systemie. Docenić twoją pomoc przez – Jonnny

Powiązane problemy