Come interagire con le variabili globali PHP
In questo nuovo articolo si descriveranno ad interagire con le variabili globali di PHP®, ad essere più precisi sarebbe più corretto riferirsi ad esse utilizzando l’appellativo di super vettori di PHP, dato che si tratta di fatto di strutture associative sulla falsariga dei dizionari custom definibili dal programmatore per mezzo della dichiarazioni di vettori, in questo caso si tratta però di strutture predefinite in PHP quindi sempre disponibili e che in molte circostanze sono auto completate da PHP, detto questo di seguito riportiamo l’elenco delle principali strutture globali definite in PHP:
- $_GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
Vettore $GLOBALS
Il vettore superglobale $GLOBALS è una struttura associati nel quale sono memorizzate tutte le variabili dichiarate all’interno dello script, la chiave da utilizzare per referenziare la variabile e con esso il suo valore è il nome della varabile privata però del simbolo $, quindi:
<?php $des="PHP è un gran linguaggio."; function check(){ $des="Java è un gran linguaggio di programmazione, java 9 sta arrivando quindi rimanete sintonizzati."; echo "$des<br>";// Si stamperà il valore associato alla variaible locale dichiarata all’interno della funzione echo $GLOBALS["des"];// Si accederà alla variabile globale e se estrarrà il valore che sarà utilizzato nell’istruzione di stampa } check(); ?>
E’ importante osservare che se nel codice precedente non ci fosse la dichiarazione della varabile $des, la prima istruzione avrebbe prodotto un messaggio di warning, in quanto PHP® non è in grado di accedere direttamente agli scope globali e quindi nello specifico alla variabile $des.
Vettore $_SERVER
Il vettore $_SERVER memorizza al suo interno informazioni relative al server come ad esempio: header, path, posizione degli script.
<!DOCTYPE html> <html lang=en> <head> <style> html, body{ width:100%; height:100%; margin:0%; font-family:"helvetica","verdana","calibri", "san serif"; overflow:hidden; padding:0%; border:0%; } </style> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum- scale=1.0, user-scalable=no, target-densitydpi=device-dpi"/> <title>PHP GLOBAL EXAMPLE</title> </head> <body> <?php echo $_SERVER [ 'PHP_SELF' ];// Memorizza al suo interno il nome del file relativo allo script attualmente in esecuzione echo "<br>" ; echo $_SERVER [ 'SERVER_ADDR' ];//Memorizza al suo interno l’indirizzo ip del server su cui è in esecuzione lo script corrente echo "<br>" ; echo $_SERVER [ 'SERVER_NAME' ];// A questa chiave è associato il nome del server su cui è in esecuzione lo script . echo "<br>" ; echo $_SERVER [ 'REQUEST_METHOD' ];// Indica quale metodo è stato utilizzato per accedere alla pagina ad esempio:GET o POST echo "<br>" ; echo $_SERVER [ 'REQUEST_TIME' ]; echo "<br>" ;// Contiene il timestamp da quando la richiesta ha avuto inizio, è disposnibile solo a partire da PHP 5.1.0. echo $_SERVER [ 'HTTP_HOST' ];// Contiene lo header relativo alla richiesta corrente se c’è ne una. echo "<br>" ; if(isset($_SERVER [ 'HTTP_REFERER' ] )) echo $_SERVER [ 'HTTP_REFERER' ];// E’ l’indirizzo della pagina utilizzato dallo user agent, il browser, utilizzato per accedere alla pagina, non tutti i browser utilizzano questo elemento echo "<br>" ; echo $_SERVER [ 'HTTP_USER_AGENT' ];// Indica lo user-agent utilizzato per accedere alla pagina. echo "<br>" ; echo $_SERVER [ 'SCRIPT_NAME' ];// Contiene il path dello script attualmente in esecuzione. ?> </body> </html>
Oltre agli elementi indicati nello script precedente è possibile anche avere a disposizione un ulteriore set di chiavi di cui di seguito riportiamo i nomi e le descrizioni
SERVER_SOFTWARE: stringa di identificazione del server, è ottenuta attraverso lo header presente nella risposta.
SERVER_PROTOCOL: Nome e revisione del protocollo tramite il quale è stato richiesta la pagina. vale a dire ‘HTTP / 1.0’
REQUEST_TIME: Il timestamp dell’inizio della richiesta. Disponibile da PHP 5.1.0.
REQUEST_TIME_FLOAT: Il timestamp dell’inizio della richiesta, con precisione microsecondo. Disponibile dal PHP 5.4.0.
QUERY_STRING: La stringa di query utilizzata per accedere alla pagina.
HTTP_CONNECTION: Dati relativi alla connessione attiva, sono infomrazioni memorizzate all’interno dell’header. Esempio: ‘keep-alive’.
SERVER_PORT: Numero di porta su cui è in ascolto il web server, tendenzialmente 80 per il protocollo http e 443 per l’HTTPS.
Vettore $_REQUEST
In questa struttura trovano posto le informazioni relative ai super-vettori $_POST, $_GET,$_COOKIE
<!DOCTYPE html> <html lang=eng> <head> <style> html, body{ width:100%; height:100%; margin:0%; font-family:"helvetica","verdana","calibri", "san serif"; overflow:hidden; padding:0%; border:0%; } </style> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum- scale=1.0, user-scalable=no, target-densitydpi=device-dpi"/> <title>HTML Form</title> </head> <body><?php if ($_SERVER['REQUEST_METHOD' ] == 'POST' ){ echo $_REQUEST['nome']."<br>"; echo $_REQUEST['occu']; } else{ ?> <form action=<? echo $_SERVER [ 'PHP_SELF' ]; ?> method ="POST"> <label for=name>Nome</label><br> <input type ="text" name ="nome" id=name required> <br><br> <label for=occu>Occupazione</label><br> <input type ="text" name ="occu" required><br><br> <input type="submit" value=submit> </form> <?php } ?> </body> </html>
Si noti che all’apertura della pagina la condizione
if ($_SERVER['REQUEST_METHOD' ] == 'POST' ){
produrrà esito FALSE in quanto la chiave REQUEST_METHOD non sarà settata con il valore POST che indica lo stato per il quale il form è stata compilata e si è cliccato sul pulsante di submit, quindi il test sarà superato solo dopo aver cliccato sul pulsante di submit.
Vettore $_POST
All’interno di questo vettore trovano posto le informazioni di tipo testo inviate attraverso una form nel caso in cui nella sezione del method della form si indichi come valore POST
Vettore $_GET
All’interno di questo vettore trovano posto i dati inviati tramite una richiesta GET questo vettore può essere compiliato sia tramite una form nel caso in cui nella sezione del method si indichi GET, sia componendo direttamente la richiesta, in questo caso la dicitura dovrà essere del tipo
url_della_pagina?key1=value&key2=value&...&keyn=value2
Esempio: //localhost/script.php?nome=homer&cognome=simpson
Vettore $_FILES
In questo vettore sono memorizzati i dati relativi ai file inviati tramite il form, la richiesta dovrà essere di tipo POST, la struttura del vettore è del tipo vettore di vettori in cui il vettore principale è indicizzato attraverso i name utilizzati per referenziare i vari elmenti di tipo file all’interno del FORM metre la sottostruttura è un sottovettore con formato standard basato sulle chiavi
- Name : consente di recuperare il nome del file caricato senza path originale
- Tmp_name : è il nome temporaneo utilizzato dal webserver per memorizzare il file all’interno dellacartella tmp/temp
- Type : è il mimetype del file espresso secondo il formato tipo_principale/tipo_secondario, esempioimage/png
- Errore: memorizza l’eventuale codice di errore, vale 0 nel caso in cui l’upload del file è statocompletato con successo
- Size: indica la dimensione in byte del file caricato
Vettore $_ENV
È un vettore associativo utilizzato per passare informazioni per mezzo delle variabili d’ambiente definite dall’utente
Vettore $_COOKIE
E’ il vettore all’interno del quale sono memorizzate le informazioni relativi ancora validi ed inviati dal client al server insieme alla richiesta di una pagina
Vettore $_SESSION
E’ il vettore al cui interno sono memorizzati i dati relativi alla sessione attiva
Sebbene si tratti di strutture molto comode da utilizzare, l’accesso diretto a questi supervettori è ormai fortemente sconsigliato in sostituzione è infatti da prediligere l’utilizzo di funzioni quali la filter_input e la filter_input_array.
Commenti