Oggi mostrerò un piccolo ed utilissimmo script PHP per recuperare l'URL, o l'indirizzo http, della risorsa corrente in modo dinamico ed infallibile.
Gli script PHP, come risaputo, girano lato server e quest'ultimo mette a disposizione tutte le informazioni necessarie, vediamo di seguito quali informazioni ci servono e come recuperarle con gli oggetti standard di PHP.
Sapere dove si trova un utente nel flusso applicativo dà molteplici vantaggi: dal punto di vista dei controlli di sicurezza come per la gestione della navigazione utente nell'ambito applicativo.
L'oggetto $_SERVER
$_SERVER è un array_associativo: come i più utilizzati $_GET e $_POST, anch'esso conserva un set di informazioni abbinate, o associate, a chiavi.
Le informazioni sono quindi conservate nel array con la forma di coppie di chiavi/valori.
Per recuperare le informazioni necessarie allo scopo dell'articolo, userò un ristretto set di chiavi associative: HTTPS, SERVER_PORT, SERVER_NAME e REQUEST_URI.
Di seguito un breve ripasso:
- la chiave HTTPS indica se è attivo il protocollo di sicurezza HTTPS;
- la chiave SERVER_PORT indica la porta su cui è attivo il servizio HTTP del server, generalmente la porta HTTP standard è la numero 80;
- la chiave SERVER_NAME risolve l'indirizzo IP del server restituendone il nome;
- la chiave REQUEST_URI restituisce il nome della risorsa corrente, con tanto di querystring a seguito;
Dopo questa breve rifrescata riguardo il significato delle chiavi da utilizzare, passo a mostrare nella sua immensa brevità lo script.
Per mia comodità di utilizzo, ho incapsulato la logica in un metodo statico di una utility class PHP.
class UrlUtils{
/**
* Restituisce l'indirizzo della risorsa HTTP corrente.
*
* @return String L'indirizzo HTTP dell'URL corrente.
*/
public static function getCurrentPageURL(){
$pageURL = 'http';
if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {
$pageURL .= "s";
}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":"
.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
}
else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
}
Bhè, la semplicità e la brevità dello script sono a dir poco disarmanti: direi che non c'è bisogno di aggiungere altro.
Alla prossima,
MA.