2010-11-18 9 views
20

Come si accettano i valori passati GET o POST senza distinzione tra maiuscole e minuscole?PHP: parametri senza distinzione tra maiuscole e minuscole

Come sample.php?OrderBy=asc sarà ancora la stessa di sample.php?orderby=asc o sample.php?ORDERBY=asc

Esiste un mezzo per realizzare quanto sopra in modo efficiente?

+0

Non sono sicuro di una buona soluzione, ma mi sono imbattuto in un problema come quello in cui la password con hash è diventata inferiore e non è stata in grado di usarla; quindi fai attenzione, e ti suggerisco di cercare di capire perché questo accade in primo luogo; di solito quando si converte da HTTP a HTTPS (o viceversa), l'URL viene convertito in maiuscolo. – BeemerGuy

+2

Qual è la ragione per cambiare caso? – zerkms

+2

beh sto lavorando su un'API in cui il sistema serve in precedenza altri client API che utilizzano le lettere maiuscole e di recente abbiamo apportato alcune modifiche all'API, inclusa la decisione di rispettare i parametri con custodia inferiore. quindi, al fine di mantenere la retrocompatibilità con i precedenti utenti dell'API, mi trovo di fronte a questo tipo di problema. – VeeBee

risposta

42

È possibile utilizzare array_change_key_case() per creare una copia di $_GET con chiavi tutte maiuscole o tutte in minuscolo.

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

(dico "creare una copia", semplicemente perché non mi piace inquinare le superglobals originali, ma è la vostra scelta per sovrascrivere se lo si desidera.)

Del resto, sarebbe stai ancora meglio se ti limiti semplicemente alla distinzione tra maiuscole e minuscole poiché potrebbe essere più semplice sia sul motore di ricerca che sugli occhi umani, oltre che sul codice ... MODIFICA: OK, in base al tuo commento Posso capire perché Voglio fare qualcosa di simile.

+0

Qual è la ragione per cambiare caso? – zerkms

+0

Quando si avvia il browser Web predefinito con un comando Shell da VBA, ho avuto l'URL misteriosamente modificato in minuscolo se il browser è il browser Windows 10 Edge. Ma non su tutti i computer Windows 10, solo alcuni. – user3142056

Problemi correlati