Seguici su Telegram, ne vale la pena ❤️ ➡ @trovalost
Vai al contenuto

PHP: come ottenere l’URL della pagina attuale

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.


Cerchi un hosting economico per il tuo sito o blog? Tophost ti aspetta (clicca qui)

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).

Ti potrebbe interessare:  Cos'è un pattern (in informatica)

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)

 

Da non perdere 👇👇👇



Questo portale esiste da 4430 giorni (12 anni), e contiene ad oggi 4005 articoli (circa 3.204.000 parole in tutto) e 12 servizi online gratuiti. – Leggi un altro articolo a caso
1/5 (1)

Ti sembra utile o interessante? Vota e fammelo sapere.

Questo sito contribuisce alla audience di sè stesso.
Il nostro network informativo: Lipercubo.it - Pagare.online - Trovalost.it.