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.