2009-03-25 26 views
5

Se entro i seguenti nel browser:php ottenere variabili come chiave senza alcun valore assegnato

http://domain.com/script.php?1234 

E script.php ha il seguente script:

$key=array_keys($_GET); 
    echo $key[0]; 

L'output sarà:

1234 

(Sto cercando di eliminare il brutto? R = 1234 e se funziona, sarà perfetto.)

La mia domanda è, è ufficialmente corretto o è una programmazione scadente?

risposta

4

Si potrebbe anche fare

echo $_SERVER['QUERY_STRING'] 

Per quanto riguarda la creazione di URL amichevole, ci sono modi migliori per fallo.

Vedi ad es .: $_GET and URL Rewriting for PHP

1

Niente può essere ufficialmente corretto, se funziona per voi quindi con tutti i mezzi lo uso. A parte il problema, ciò corrisponde al valore.

Quando si dispone di example.com?1234&4567 Quindi si avranno due valori senza nome chiave per dirti cosa è cosa.

Ma se si vuole farla finita con brutto url, si dovrebbe guardare in mod_rewrite

Beginners guide

Another beginners guide

1

Si consiglia di non utilizzare questo approccio. Se non vuoi che le tue variabili vengano mostrate puoi usare URL rewrite per rendere l'URL bello. Inoltre, non dimenticare di disinfettare il tuo $ _GET :)

In realtà, nel tuo esempio, 1234 è la variabile che invii tramite GET, senza valore, se vuoi guardarla in questo modo.

1

Questo è corretto. La variabile è chiamata 1234 e non ha valore. Ciò significa che

GET['1234'] == ''; 

Si potrebbe anche scrivere http://example.com?1234=10 allora il risultato sarebbe

GET['1234'] == '10'; 
+0

utilizzare meglio il http://example.com ufficiale la prossima volta, vedi http://tools.ietf.org/html/rfc2606#section-3. –

+0

Grazie, non sapevo che esistesse un RFC per questo – soulmerge

0

La mia domanda è, è presente ufficialmente corretto o è la programmazione poveri?

Query-parameter-without-value non è documentato per funzionare, anche se probabilmente continuerà nella pratica.

Se si desidera solo per afferrare l'intera stringa di query senza analizzarlo come parametri, la cosa migliore da fare sarebbe quella di dirlo direttamente:

echo $_SERVER['QUERY_STRING'] 

(Qualunque cosa facciate, non eco direttamente però! O disinfettare il valore, ad es.convertendolo in un numero intero, oppure, se si desidera consentire una stringa arbitraria, esportarlo in modo opportuno per JavaScript, con virgolette e barre inverse backslash.)

Problemi correlati