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?
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
ok, daj mi znać, jeśli potrzebujesz dodatkowej pomocy. –
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