È sicuro usare $_SERVER['REQUEST_URI'] in WordPress?
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.
$_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.

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.
