2010-11-18 16 views
20

W jaki sposób akceptować przekazywane wartości GET lub POST w sposób niewrażliwy na wielkość liter?PHP: Rozróżnianie wielkości liter

Jak sample.php?OrderBy=asc wciąż będzie taka sama jak sample.php?orderby=asc lub sample.php?ORDERBY=asc

Czy istnieje sposób na osiągnięcie powyższego efektywnie?

+0

Nie jestem pewien, czy to dobre rozwiązanie, ale wpadłem na taki problem, w którym hashowane hasło ma mniejsze litery i nie może go użyć; więc bądź ostrożny, a proponuję sprawdzić, dlaczego tak się dzieje; zazwyczaj podczas konwersji z HTTP na HTTPS (lub z powrotem), adres URL ma małe litery. – BeemerGuy

+2

Jaki jest powód zmiany sprawy? – zerkms

+2

dobrze działam na API, gdzie wcześniej system obsługiwał innych klientów API, którzy używają wielkich liter, a ostatnio zrobiliśmy API kilka zmian, w tym decyzję o uwzględnieniu parametrów o małych rozmiarach. więc, aby zachować kompatybilność wsteczną z poprzednimi użytkownikami API, mam do czynienia z tego rodzaju problemem. – VeeBee

Odpowiedz

42

Możesz użyć array_change_key_case(), aby utworzyć kopię $_GET z wszystkimi dużymi lub małymi literami.

$_GET_lower = array_change_key_case($_GET, CASE_LOWER); 
$orderby = isset($_GET_lower['orderby']) ? $_GET_lower['orderby'] : 'asc'; 
echo $orderby; 

(mówię „utworzyć kopię”, bo po prostu nie podoba zanieczyszczających oryginalne superglobals, ale to twój wybór, aby zastąpić je jeśli chcesz.)

Zresztą to, że nadal będzie lepiej, jeśli po prostu przylegasz do dopasowywania wielkości liter, ponieważ może być łatwiej zarówno w wyszukiwarce, jak iw ludzkich oczach, a także łatwiej w kodzie ... EDYTOWANIE: OK, na podstawie Twojego komentarza mogę zobaczyć, dlaczego chciałby zrobić coś takiego.

+0

Jaki jest powód zmiany sprawy? – zerkms

+0

Po uruchomieniu domyślnej przeglądarki internetowej za pomocą polecenia Shell z VBA, adres URL został w tajemniczy sposób zmieniony na wszystkie małe litery, jeśli przeglądarka jest przeglądarką Windows 10 Edge. Ale nie na wszystkich komputerach z systemem Windows 10, tylko niektórych. – user3142056

Powiązane problemy