Gli ultimi tutorial di sviluppo web
 

PHP 5 variabili globali - superglobals


Superglobals sono stati introdotti in PHP 4.1.0, e sono variabili built-in che sono sempre disponibili in tutti gli ambiti.


Variabili PHP globali - superglobali

Diverse variabili predefinite in PHP sono "superglobals" , il che significa che sono sempre accessibili, indipendentemente dal campo d'applicazione - ed è possibile accedervi da qualsiasi funzione, classe o file senza dover fare nulla di speciale.

Il variabili PHP superglobale sono:

  • $ GLOBALS
  • $ _SERVER
  • $ _REQUEST
  • $ _POST
  • $ _GET
  • $ _FILES
  • $ _ENV
  • $ _COOKIE
  • $ _SESSION

Questo capitolo spiegherà alcune delle superglobals, e il resto verrà spiegato nei capitoli successivi.


PHP $ GLOBALS

$ GLOBALS è una variabile globale super-PHP che viene utilizzato per accedere alle variabili globali da qualsiasi parte del script PHP (anche all'interno di funzioni o metodi).

Memorizza tutte le variabili globali di PHP in un array chiamato $ GLOBALS [ index ]. L'indice contiene il nome della variabile.

L'esempio seguente mostra come utilizzare il super variabile globale $ GLOBALS:

Esempio

<?php
$x = 75;
$y = 25;
 
function addition() {
    $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
 
addition();
echo $z;
?>
Esempio Run »

Nell'esempio sopra, poiché z è una variabile presente nell'array $ GLOBALS, è anche accessibile dall'esterno della funzione!


PHP $ _SERVER

$ _SERVER è una variabile globale super-PHP che contiene informazioni sulle intestazioni, i percorsi ei luoghi di script.

L'esempio seguente mostra come utilizzare alcuni degli elementi in $ _SERVER:

Esempio

<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
Esempio Run »

La seguente tabella elenca gli elementi più importanti che possono andare dentro $ _SERVER:

Elemento / Codice Descrizione
$ _SERVER [ 'PHP_SELF'] Restituisce il nome del file dello script attualmente in esecuzione
$ _SERVER [ 'GATEWAY_INTERFACE'] Restituisce la versione del Common Gateway Interface (CGI) il server utilizza
$ _SERVER [ 'SERVER_ADDR'] Restituisce l'indirizzo IP del server host
$ _SERVER [ 'SERVER_NAME'] Restituisce il nome del server host (such as www.w3ii.com)
$ _SERVER [ 'SERVER_SOFTWARE'] Restituisce la stringa di identificazione del server (such as Apache/2.2.24)
$ _SERVER [ 'SERVER_PROTOCOL'] Restituisce il nome e la revisione del protocollo di informazioni (such as HTTP/1.1)
$ _SERVER [ 'REQUEST_METHOD'] Restituisce il metodo di richiesta utilizzato per accedere alla pagina (such as POST)
$ _SERVER [ 'REQUEST_TIME'] Restituisce il timestamp di inizio della richiesta (such as 1377687496)
$ _SERVER [ 'QUERY_STRING'] Restituisce la stringa di query se la pagina si accede tramite una stringa di query
$ _SERVER [ 'HTTP_ACCEPT'] Restituisce l'intestazione Accept dalla richiesta corrente
$ _SERVER [ 'HTTP_ACCEPT_CHARSET'] Restituisce l'intestazione Accept_Charset dalla richiesta corrente (come UTF-8, ISO-8859-1)
$ _SERVER [ 'HTTP_HOST'] Restituisce l'intestazione host dalla richiesta corrente
$ _SERVER [ 'HTTP_REFERER'] Restituisce l'URL completo della pagina corrente (non affidabile in quanto non tutti gli user-agent lo supportano)
$ _SERVER [ 'HTTPS'] È lo script interrogato attraverso un protocollo HTTP sicuro
$ _SERVER [ 'REMOTE_ADDR'] Restituisce l'indirizzo IP dal quale l'utente sta visualizzando la pagina corrente
$ _SERVER [ 'REMOTE_HOST'] Restituisce il nome host da cui l'utente sta visualizzando la pagina corrente
$ _SERVER [ 'REMOTE_PORT'] Restituisce la porta utilizzata sulla macchina dell'utente per comunicare con il server web
$ _SERVER [ 'SCRIPT_FILENAME'] Restituisce il percorso assoluto dello script attualmente in esecuzione
$ _SERVER [ 'SERVER_ADMIN'] Restituisce il valore dato alla direttiva SERVER_ADMIN nel file di configurazione del server Web (se lo script viene eseguito su un host virtuale, sarà il valore definito per questo host virtuale) (such as [email protected])
$ _SERVER [ 'SERVER_PORT'] Restituisce la porta sulla macchina server utilizzato dal server web per la comunicazione (such as 80)
$ _SERVER [ 'SERVER_SIGNATURE'] Restituisce la versione del server e il nome host virtuale che vengono aggiunti alle pagine generate dal server
$ _SERVER [ 'PATH_TRANSLATED'] Restituisce il percorso base del file system allo script corrente
$ _SERVER [ 'SCRIPT_NAME'] Restituisce il percorso dello script corrente
$ _SERVER [ 'SCRIPT_URI'] Restituisce l'URI della pagina corrente

PHP $ _REQUEST

PHP $ _REQUEST viene utilizzato per raccogliere i dati dopo la presentazione di un modulo HTML.

L'esempio seguente mostra un modulo con un campo di input e un pulsante di invio. Quando un utente invia i dati cliccando su "Submit" , i dati del modulo viene inviato al file specificato nel action attributo del <form> tag. In questo esempio, si segnala a questo stesso file di dati del modulo per l'elaborazione. Se si desidera utilizzare un altro file PHP per elaborare i dati dei moduli, sostituirlo con il nome di vostra scelta. Poi, possiamo usare il super variabile globale $ _REQUEST per raccogliere il valore del campo di input:

Esempio

<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  Name: <input type="text" name="fname">
  <input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // collect value of input field
    $name = $_REQUEST['fname'];
    if (empty($name)) {
        echo "Name is empty";
    } else {
        echo $name;
    }
}
?>

</body>
</html>
Esempio Run »

PHP $ _POST

PHP $ _POST è ampiamente usato per raccogliere i dati dei moduli dopo aver inviato un form HTML con method = "post". $ _POST è anche ampiamente utilizzata per passare variabili.

L'esempio seguente mostra un modulo con un campo di input e un pulsante di invio. Quando un utente invia i dati cliccando su "Submit" , i dati del modulo viene inviato al file specificato nel action attributo del <form> tag. In questo esempio, si segnala per il file stesso per l'elaborazione dei dati del modulo. Se si desidera utilizzare un altro file PHP per elaborare i dati dei moduli, sostituirlo con il nome di vostra scelta. Poi, possiamo usare il super variabile globale $ _POST per raccogliere il valore del campo di input:

Esempio

<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  Name: <input type="text" name="fname">
  <input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // collect value of input field
    $name = $_POST['fname'];
    if (empty($name)) {
        echo "Name is empty";
    } else {
        echo $name;
    }
}
?>

</body>
</html>
Esempio Run »

PHP $ _GET

PHP $ _GET può anche essere utilizzato per raccogliere i dati dei moduli dopo aver inviato un form HTML con method = "get".

$ _GET anche in grado di raccogliere i dati inviati nella URL.

Supponiamo di avere una pagina HTML che contiene un collegamento ipertestuale con i parametri:

<html>
<body>

<a href="test_get.php?subject=PHP&web=w3ii.com">Test $GET</a>

</body>
</html>

Quando un utente fa clic sul link "Test $GET" , i parametri "subject" e "web" sono inviati a "test_get.php" , e si può quindi accedere ai propri valori in "test_get.php" con $ _GET.

L'esempio seguente mostra il codice in "test_get.php" :

Esempio

<html>
<body>

<?php
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?>

</body>
</html>
Esempio Run »

Suggerimento: Si impara di più circa $ _POST e $ _GET in PHP Form capitolo.