54 DBMS 2 – variabili del server
Nella lezione precedente abbiamo visto il metodo per passare i dati di una pagina, ora vediamo dove vanno a finire questi dati.
I dati inviati sono memorizzati in PHP in 6 array
- $_SERVER
Contiene info sul server web e sul sistema operativo server (win linux) - $_ENV
Info sull’ambiente - $_FILES
Contiene info su eventuali files in upload - $_COOKIE
Sono memorizzate tutte quelle info che il browser può salvare sul disco dell’utente e che possono essere inviate al server - $_GET
Dati delle richieste di GET - $_POST
Dati delle richieste di POST - $_REQUEST
Riassume all’interno tutte le info dei 3 precedenti (COOKIE, GET, POST)
Vediamo come richiamare le informazioni contenute negli array del server.
Sfruttiamo la pagina elogin1.php e inseriamo un ciclo foreach per visualizzare i dati dentro a $_SERVER
$nl="<br />"; foreach($_SERVER as $key => $value) echo "<b>". $key . "</b> :" .$value. $nl;
Ottengo una serie di info utili sui parametri del server. Per esempio in fondo abbiamo la REQUEST_TIME con il suo valore in secondi, se la divido per i secondi, le ore e gli anni ottengo il numero degli anni dalla data di riferimento del ns server (la data convenzionale di riferimento per scandire i secondi è il 1 Gennaio 1970)
$anni = $_SERVER["REQUEST_TIME"] / (24 * 3600 * 365); echo $anni;
Nel mio caso l’echo produce: 47.047639396246 che corrisponde a poco più di 47 anni (oggi è il 6 Gennaio 2017).
La variabile $_ENV di default ha disabilitato l’accesso alle variabili d’ambiente per motivi di risorse. Per abilitare l’accesso a $_ENV basta cercare nel file php.ini il valore:
variables_order = "GPCS"
GPCS sono le iniziali di Get Post Cookie Server, aggiungiamo la E di Env
variables_order = "EGPCS"
e riavviamo il server ora funziona:
foreach($_ENV as $key => $value) echo "<b>". $key . "</b> :" .$value. $nl;
saltiamo $_FILES e vediamo $_COOKIE, generiamo dei cookie con la funzione setcookie, importante è inserirli prima di caricare le informazioni HTML con un suo tag php
<?php setcookie("CookieProva", "Sono il valore del cookie", time()+3600, "/"); ?> <!DOCTYPE html> <html> <head></head> <title>ELOGIN</title> <?php $nl="<br />"; foreach($_COOKIE as $key => $value) echo "<b>". $key . "</b> :" .$value. $nl; ?> </html>
la funzione setcookie permette di specificare dei cookie, il primo argomento è l’id (il nome) del cookie (CookieProva) il secondo è il valore, il terzo è il tempo che il cookie deve rimanere memorizzato (in questo caso 1 ora)
Stessa cosa possiamo fare con get e post, ricordando di cambiare il metodo nel form: method=”GET”
foreach($_GET as $key => $value) echo "<b>". $key . "</b> :" .$value. $nl;
method=”POST”
foreach($_POST as $key => $value) echo "<b>". $key . "</b> :" .$value. $nl;
Indipendentemente dal metodo specificato nel form, abbiamo il nostro asso acchiappatutto col _$REQUEST
foreach($_REQUEST as $key => $value) echo "<b>". $key . "</b> :" .$value. $nl;
Notiamo che non vengono visualizzati i cookie, bisogna abilitarli nel php.ini cambiando la stringa
request_order = "GP"
GP sta per Get Post in
request_order = "CGP"
riavviare il server e riprovare e magicamente compariranno il nostro cookie.