Come trovare l’URL corrente in PHP

Come trovare l’URL corrente in PHP

Determinare l’URL della pagina corrente è una delle richieste più frequenti da parte dei webmaster, e questo perchè non esiste (e non può esistere per almeno tre ragioni) una funzione che possa determinarlo in un colpo solo.

Si tratta, come vedremo, di usare le funzioni del PHP che forniscano i vari pezzi ed assemblarli, in seguito, mediante concatenazione di stringhe.

Il motivo per cui non esiste in PHP puro ua funzione per determinare l’URL corrente è legata a tre aspetti:

  1. la configurazione del server, che potrebbe fornire  o meno questa informazione;
  2. il server usato (NGINX o Apache), in quanto le funzioni per accedervi sono diverse;
  3. il valore di alcune variabili apparentemente lato server può cambiare in base al browser ed alla posizione del client.

Anzitutto, è necessario tenere presente che un URL è definito in genere come segue:

[protocollo]://[host][path][parametri]

ovvero quattro “pezzi” distinti tra loro, che rappresentano:

  1. il [protocollo] che è solitamente FTP, HTTP oppure le sempre più diffuse HTTPS;
  2. l’ [host] ad esempio miosito.com oppure ftp.prova.abc;
  3. il [path] cioè quello che definisce le funzionalità di accesso alle pagine (directory e/o file);
  4. i [parametri] che corrispondono a quelli passati via $_GET[‘…’] in PHP.

Ecco perchè un primo modo per determinare l’URL corrente, ad esempio in fase di sviluppo su localhost, è il seguente:

$actual_link ="http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"

dove in sostanza memorizziamo nella variabile $actual_link (da definire solitamente nell’header dei nostri file) l’host del sito e l’URI della richiesta. Non sempre pero’ questo approccio funziona, proprio perchè da’ per scontato che il programmatore possa conoscere il protocollo usato a priori: in particolare, questo diventa complicato nel caso di connessioni HTTPS miste con HTTP e/o FTP.

Altre soluzioni sono difficili da universalizzare, bisogna tenere presente queste indicazioni di massima.

Per ottenere il nome del server è possibile sfruttare la variabile SERVER_NAME, che è una soluzione molto flessibile pero’ lega il nome del server alla configurazione sulla macchina, col risultato che ciò che funziona oggi su localhost potrebbe smettere di funzionare una volta messo in produzione. Similmente, sfruttando HTTP_HOST si ottiene un host comprensivo della porta di accesso (che è la 80 di norma, ma potrebbe cambiare su configurazioni particolari, DMZ o reti private).

Esempio:

  • $_SERVER[‘HTTP_HOST’] ——> ‘localhost:8080’
  • $_SERVER[‘SERVER_NAME’] ——> ‘localhost’

Altre variabili che possono aiutare a comporre il vostro URL sono:

  • $_SERVER[‘REQUEST_URI’] che fornisce solo il nome del file (ad es. /index.html) e
  • $_SERVER[‘QUERY_STRING’] che invece fornisce “tutto quello che c’è” dopo il punto interrogativo (?) nell’URL.

Per determinare, su questa falsariga, se la pagina corrente è la home page o meno (in WP c’è già una funzione così, qui immaginiamo di dovercela fare da zero), potete sfruttare le espressioni regolari:

function is_home() { $url = http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]; return preg_match("/home.php/", $url); }

se invece c’è un singolo file index.php con varie action o pagine ammissibili via $_GET, un’idea potrebbe essere quella di salvare le action ed i vari request URI all’interno di un array statico, e poi verificare se l’URL sia presente o meno in quell’array, del tipo:
function is_home(){
global $actions;
$link = current_page();

foreach ( $actions as $s ){
if ( $s!=”” && preg_match(“/$s/”,$link) )
return false; //…è una pagina intermedia
}
//…è la home
return true;
}

(fonti: Stackoverflow, SO, Apache)

 

Ti piace questo articolo?

0 voti

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.

Ti potrebbero interessare (Guide per webmaster):

Cerca altro nel sito

Clicca sul box, e scegli la sezione per vederne i contenuti.

Come trovare l’URL corrente in PHP

Determinare l’URL della pagina corrente è una delle richieste più …
[ 0 ] 0 utenti hanno votato questa pagina