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.