Come interagire con le variabili globali PHP

Alessandro PC Academy di - 28 settembre 2016 in Programmazione

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: http://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.

Share

Promozioni

Potrebbe interessarti



Alessandro PC Academy
Alessandro G.: Freelance, è programmatore, docente, collaboratore stacanovista della PC Academy. Per PC Academy cura: i contenuti dei programmi dei corsi dell'area Programmazione; le lezioni in aula della gran parte dei corsi di Programmazione; il tutoraggio di molti corsi online per l'area Programmazione e CMS; la redazione di articoli per questo portale.

Commenti