È sicuro usare $_SERVER['REQUEST_URI'] in WordPress?

18 ago 2013, 15:51:12
Visualizzazioni: 18.8K
Voti: 6

Ho esaminato altre risposte e vedo che $_SERVER['REQUEST_URI'] è generalmente raccomandato ed è la risposta accettata per ottenere l'URI della pagina corrente insieme a $_SERVER['HTTP_HOST'].

Ho controllato il codice sorgente di WP e viene ampiamente utilizzato anche lì.

Ma ho trovato alcune controversie sul fatto che non funzioni su IIS. Forse era solo un problema nel passato? Ho persino provato a installare IIS nel mio PC per verificarlo, ma non riesco a configurarlo e sembra eccessivo solo per confermare questo.

Sembra che sia l'unica variabile SERVER che include le informazioni che mi servono:

/slug-pagina/nggallery/tags/colori-scuri/

la parte evidenziata nell'esempio viene aggiunta tramite NextGEN Gallery 2 ed è accessibile solo tramite $_SERVER['REQUEST_URI'], nient'altro. In precedenza era accessibile usando get_query_var, ma non più.

Se $_SERVER['REQUEST_URI'] non è impostato, simularlo impostandolo manualmente e creandolo in base a PHP_SELF e QUERY_STRING produce risultati non equivalenti.

Quindi è sicuro fare affidamento sul fatto che $_SERVER['REQUEST_URI'] sia sempre disponibile per l'uso nelle installazioni di WP? Presumo di sì dato che il codice core di WP lo utilizza, ma ho voluto chiedere.

0
Tutte le risposte alla domanda 1
1
13

$_SERVER['REQUEST_URI'] non sarà vuoto in WordPress, perché viene popolato in wp_fix_server_vars() (file wp-includes/load.php).

Questa funzione viene chiamata in wp-settings.php prima che qualsiasi plugin venga caricato. Quindi puoi usarlo.

Ma ricorda sempre di effettuare l'escape del valore. È una variabile globale e può essere modificata da qualsiasi altro codice, quindi non puoi fidarti del suo valore.

Un caso diverso è accedere al valore tramite

filter_input(INPUT_SERVER, 'REQUEST_URI');

L'accesso in scrittura da parte di WordPress non influenzerà il valore, perché filter_input() prende sempre il valore originale. Quindi, sebbene questo sia l'approccio più moderno e pulito, potrebbe fallire in alcune circostanze. Vedi anche questa discussione su Stack Overflow.

18 ago 2013 15:56:06
Commenti

Grazie mille, informazioni eccellenti. Ora posso disinstallare IIS e dimenticarmene :) Ho cercato in massa i file di WP per $_SERVER['REQUEST_URI'] ma in qualche modo ho saltato quello che hai indicato. Naturalmente lo eseguirò l'escape, non mi fido di niente. Avevo solo bisogno di sapere se è utilizzabile. Grazie ancora.

Firsh - justifiedgrid.com Firsh - justifiedgrid.com
18 ago 2013 16:22:57