Sabato, 21 Dicembre 2019 08:36

Le variabili in PHP, applicazioni particolari

Scritto da

Nei nostri esercizi utilizziamo spesso le variabili per gestire le varie funzionalità. Tralasciamo la teoria completa che lasciamo ai manuali e concentriamoci su alcuni dettagli che possono fare la differenza per i nostri piccoli script.

Quando gli alunni approcciano il PHP, la prima difficoltà che incontrano è capire come stampare le variabili o inglobarle nelle query. Vediamo qualche esempio vedendo la differenza usando le virgolette singole (apice o apostrofo se preferite) ' ' o le virgolette doppie " ". 

$nome = "Pippo";
echo "Il mio nome è $nome <br>"; //Il mio nome è Pippo
echo "Il mio nome è " . $nome; echo "<br>"; //Il mio nome è Pippo
echo "Il mio nome è " . $nome . " e sono felice <br>"; //Il mio nome è Pippo e sono felice
echo 'Il mio nome è ' .$nome. " e sono felice <br>"; //Il mio nome è Pippo e sono felice

Come avete visto, possiamo immergere la nostra variabile all'interno di una stringa semplicemente avendo cura di scrivere la stringa con le doppie virgolette. E' un sistema pratico, ma spesso nasconde un insidia perché non è molto leggibile e se stiamo debuggando il $ potrebbe sfuggire all'occhio stanco. Il secondo e terzo rigo sono invece molto simili all'uso delle stringhe classico di molti linguaggi di programmazione, intuitivo e richiede solo un po' di accortezza. Si può usare, in questo caso, sia virgolette singole che doppie come nell'ultima riga e vi faccio notare come il punto possa essere o meno attaccato alla variabile. Se copiate l'intero codice per testarlo col web server, per leggere meglio è stato inserito qualche <br>;

 Altro esempio interessante, che può risultare particolare rispetto ad altri linguaggi di programmazione, è l'uso delle variabili nelle/come stringhe di testo, che vengono quindi variabilizzate! Per farlo basta usare l'operatore $ applicato ad una variabile $nomevariabile. Guardiamo un esempio.

 

$italiano = 'Ciao Mondo';
$inglese  = 'Hello World';

$lingua = 'italiano';

echo $$lingua;

Abbiamo due stringhe classiche. Se facessimo un echo della variabile $lingua, avremmo la stampa italiano. Ma applicandoci il $ davanti è come se stampassimo $italiano! Provate a sostituire inglese nella variabile $lingua per ottenere la stampa Hello World.  

Altro concetto che è bene riassumere è quello dell'uso delle variabili superglobali, variabili già presenti a sistema e che svolgono funzioni fondamentali per far comunicare gli script tra loro. Vediamone un prospetto. In rosso quelli che sono decisamente più significativi per le nostre esercitazioni

Variabile Descrizione
$GLOBALS E' un vettore che contiene le variabili definite come globali attraverso la keyword global 
$_SERVER Contiene gli header e le informazioni relative al server e allo script
$_GET E' un vettore che contiene i parametri passati tramite URL (es http://www.pippo.it/?nome=pluto&param2=ciao)
$_POST E' un vettore che contiene i parametri passati come POST allo script attraverso una form
$_FILES E' una matrice che contiene le informazioni relative ai file uploadati dallo script corrente attraverso il metodo POST.
$_COOKIE E' un vettore che contiene i cookie.
$_REQUEST Contiene tutti i parametri contenuti anche in $_GET, $_POST e $_COOKIE, ma non occorre fare distinzione
$_SESSION E' un vettore che contiene le informazioni relative alle sessioni
$_ENV Contiene tutti i parametri passati all'ambiente.

Tra le variabili superglobali, quella meno evidente per la sua utilità sembrerebbe essere $_SERVER ma è fondamentale per svariate applicazioni. Proviamo le seguenti righe di codice. Vi raccomando di scrivere in stampatello altrimenti l'array associativo non troverà la chiave corretta.

La prima ci indica lo user agent del browser che ha richiesto la pagina. E' una informazione fondamentale se vogliamo realizzare siti con grafica o applicazioni differenziate a seconda del browser o, più probabilmente, a seconda se il dispositivo richiedente sia mobile o fisso.

echo $_SERVER['HTTP_USER_AGENT']

/** 
Stampa qualcosa del genere
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36
*/

Per conoscere indirizzo IP e porta del browser chiamante, per filtrare magari per motivi di sicurezza o indirizzare direttamente determinate funzionalità al richiedente ci sono invece le seguenti righe:

echo "IP: ".$_SERVER['REMOTE_ADDR']; 
echo ":".$_SERVER['REMOTE_PORT']; 

 

Meno evidente l'utilità, ma è bene conoscere la voce che permette di capire quale request abbia invocato lo script PHP, sempre soprattutto per motivi di sicurezza.

 echo $_SERVER['REQUEST_METHOD'];

/** 
Risponde GET o POST
*/
Letto 59 volte
Prof. Alfredo Centinaro

Docente di "Scienze e tecnologie informatiche", "Tecnologie e progettazione di sistemi informatici", "Sistemi e Reti" presso IIS Alessandrini-Marino (Teramo), consulente e sviluppatore web. Ha collaborato per anni come sviluppatore presso MHT - Treviso, assistente Sistemi ed elaborazione dell'informazione in UniTE Corso di laurea in Scienze del turismo culturale, tutor presso Telecom Italia Learning Services (L'Aquila)

Joomla SEF URLs by Artio