Vai al contenuto

PHP: come ottenere l’URL della pagina attuale

7169355262 f6dd39b189 php

Navigare al sicuro? Proteggi la tua connessione su internet con NordVPN (clicca qui)

Aggiornato il: 17-11-2022 13:30
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.


Vuoi pubblicare il tuo articolo su questo portale? Cercaci su Rankister (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:  Selettore PHP nella pratica: ecco le versioni minime da usare per le funzioni più importanti

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)

 



Questo blog pubblica contenuti ed offre servizi free da 12 anni. – Leggi un altro articolo a caso – Per informazioni contattaci
1/5 (1)

Ti sembra utile o interessante? Vota e fammelo sapere.

cyberpunk 12

Ingegnere informatico per passione, consulente per necessità, docente di informatica; ho creato Trovalost.it e ho scritto quasi tutti i suoi contenuti. Ogni guida viene da me periodicamente revisionata / aggiornata, ove e quando necessario. Credits immagini: pexels.com, pixabay.com, wikipedia.org, Midjourney, StarryAI, se non diversamente specificato. Questo articolo non contiene necessariamente suggerimenti, pareri o endorsement diretti da parte del proprietario del progetto. Per contatti clicca qui


Segui il canale Youtube @Tecnocrazia23