Share |

lunedì 21 febbraio 2011

PHP: ricavare la URL della pagina corrente

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.

0 commenti:

Posta un commento

Non ti è chiaro qualcosa?
No problem, posta il tuo dubbio ;)

..... e ricordati di firmarlo!