Mantenimento dello stato: I cookie 
    La funzione setcookie()  definisce un cookie 
    da inviare insieme alle altre informazioni di header. 
    
    Essi permettono di memorizzare dei dati o informazioni 
    addizionali tramite il browser dell'utente, poihcé fanno parte degli 
    header del protocollo HTTP, tale funzione deve essere la prima in assoluto 
    ad essere inviata, prima di qualsiasi contenuto della pagina HTML. 
    
    La funzione ha questa sintassi 
        int setcookie (string name [, string 
    value [, int expire [, string path [, string domain [, int secure]]]]]) 
    
    come si può notare tutti gli argomenti sono opzionali 
    tranne name e con 
    i seguenti significati: 
       name, nome 
    del cookie da creare; 
       value, il 
    valore da attribuirgli; 
       expire, data 
    di scadenza, che il brawroser provvederà a cancellare; 
       path, percorso 
    della pagina che deve restituirlo; 
       domain, dominio 
    per cui esso è valido; 
       secure, indica 
    se esso deve essere trasmesso solo in una connesisone sicura di tipo HTTPS 
    
    É conseguente che i cookie diventino disponibili 
    solo dopo la pagina successiva a quella che li ha generati, al refreshing 
    della medesima e possono essere cancellati solo con gli stessi parametri che 
    gli ha generati. 
      
  
     
      | <?php // è stata utilizzata la funzione time() 
        + 3600 secondi = 1 ora
 if ($scelta==impostacookie) {
 // imposta il cookie
 SetCookie( 'fms', $valore, time()+3600, 
        '/');
 echo '<a href="cookie.php"> per attivare il cookie 
        ricaricare la pagina, clicca qui </a>';
 exit;
 } else
 if ($scelta==rimuovicookie) {
 // cancella il cookie
 setcookie('fms', '', time()-1, 
        '/' );
 echo '<a href="cookie.php"> per disattivare il cookie 
        ricaricare la pagina, clicca qui </a>';
 exit;
 }
 ?>
 <html>
 <head><title>cookie</title></head>
 <body>
 <?
 // Controlla se il cookie e' stato trasmesso dal browser
 //  e precisamente il nome utilizzato, fms
 if ( ! isset($fms) ) {
 echo "Cookie non impostato";
 } else {
 // bisogna chiedere il nome del cookie, in questo caso fms
 // per conoscere il valore immesso
 echo "nome  valore<br>";
 echo "-----------<br>";
 echo "fms = $fms";
 }
 ?>
 <? if ( !isset($fms) ) {  // possiamo scegliere se visualizzare l'impostazione oppure no
 ?>
 <br><br>
 <form action="cookie.php" method=POST>
 <input type=hidden name="scelta" value="impostacookie">
 Inserisci il valore<br>
 <input type=text name="valore" value="">
 <br>
 <br>
 <input type=submit value="Imposta 
          il cookie">
 </form>
 <? } else { ?>
     <form action="cookie.php" method=POST> <input type=hidden name="scelta" value="rimuovicookie">
 <input type=submit value="Rimuovi 
          il cookie">
 </form>
 <? } ?>
 </body>
 </html>
 
 | 
  
  da notare la funzione int isset (mixed var), 
    che verifica se una variabile è definita. 
  
Comunicazione con l'utente: i form 
    Proprio nel precedente paragrafo sono stati usati i form o moduli per inviare 
    dati. Non c'è nulla di differente rispetto a tutti gli altri metodi 
    di gestione dei form e nemmeno sull'uso delle variabili nei confronti di ASP 
    e JSP: quando si inviano variabili tramite form queste sono considerate 
    dalla pagina ricevente delle varibili globali. 
    Il metodo GET usato in un form equivale al passaggio 
    dei paramtri via URL, cioè la pagina richiamata con tutte le variabili 
    e i parametri sono visualizzati nella barra degli indirizzi, salvati nella 
    cache e o potrebbero esseri salvati nella cartella cronologia, cosa che non 
    è per nulla consigliato: pensate ad esempio che l'utente immetta una 
    password o un altro tipo di dato personale. In sostanza è sempre consigliato 
    usare il metodo POST nei form. 
  
Di seguito c'è un form d'invio dati (form.php)
  
     
      | <HTML><HEAD><TITLE>primo form</TITLE></HEAD> <BODY>
 <form method="post" 
        action="form2.php">
  <!-- **** quello che segue è 
          una tetxtbox (casella di testo) **** --> Cognome: <input name="cognome" 
          type="text"><br>
 Nome: <input name="nome" type="text"><br>
  <!-- **** qui invece una combobox (casella 
          di riepilogo combinata) **** --> Tipo di scuola
 <select name="tiposcu">
 <option value="Materna">Materna
 <option value="Elementare">Elementare
 <option value="Media">Media
 <option value="Superiore">Superiore
 </select><br>
  <!-- **** qui una checkbox (casella 
          di controllo) **** --> <input type="checkbox" 
          name="materia"> 
          Materia Insegnata<br>
  <!-- **** qui invece una listbox (casella 
          di riepilogo) a cui viene passato un array **** --> <select multiple name="materia[]">
 <option value="Italiano">Italiano
 <option value="Matematica">Matematica
 <option value="Altro">Altro
 </select><br>
  <!-- **** tipo pulsante di invio dati 
          (submit) con testo "invia" **** --> <input type="submit" 
          value="invia">
  </form> </BODY>
 | 
  
  poi uno di ricezione ed elaborazione (form2.php) 
  
     
      | <HTML><HEAD><TITLE>prelievo dati primo form</TITLE></HEAD> <BODY>
 <?php
 echo "lei è il sig <B>$cognome 
        <i>$nome</i></b>";
 echo "\n<br>";
 echo "la sua scuola d'appartenenza è $tiposcu";
 echo "\n<br>";
 // adesso controlliamo se esiste la variabile 'materia', la checkbox
 // viene valutata l'esistenza dell'array if (isset($materia))
 {
 echo "materia insegnata: ";
 echo "\n<br>";
 // viene scandito l'array per estrarre il valore scelto 
          con foreach
 foreach($materia 
          as $val)
 echo "$val ";
 }
 ?>
 </BODY>
 </HTML>
 | 
  
  
Attenzione: per le versioni dalla 4.1 in poi e anche la 5.x occorre usare uno stile diverso per prelevare le informazioni tra le pagine web. Gli esempi che seguono si commentano da sè.
 
 
Uso del metodo GET
 pagina chiamante
 
   
     | <HTML> <HEAD>
 <TITLE>metodo GET</TITLE>
 </HEAD>
 <BODY>
 Prova d'invio informazioni<BR>
 <A HREF= "metodoget2.php?strCognome=Crispino&strNome=Santo"> Elabora dati </A>
 </BODY>
 </HTML>
 | 
 
 
 pagina ricevente
 
 
   
     | <HTML> <HEAD>
 <TITLE>metodo GET</TITLE>
 </HEAD>
 <BODY>
 <?PHP
 echo "Prova ricezione informazioni<BR>";
 echo "Sono stati inviati i seguenti dati<BR>";
 echo "Primo dato: " .$_GET['strCognome']. "<BR>";
 echo "Secondo dato: " .$_GET['strNome']. "<BR>";
 ?>
 </BODY>
 </HTML>
 | 
 
 
 Uso del metodo POST e i form 
Modulo casella di testo con pagina chiamante e ricevente 
 
   
     | <HTML> <HEAD>
 <TITLE> modulo</TITLE>
 </HEAD>
 <BODY>
 Immetti il tuo nome<BR>
 <FORM METHOD="post" ACTION="elaboradati1.php">
 <INPUT TYPE="text" NAME="strnome">
 <BR>
 <INPUT TYPE="submit" VALUE="Invia dati">
 <INPUT TYPE="reset" VALUE="cancella i dati immessi">
 </FORM>
 </BODY>
 </HTML>
 
 -------------- file elaboradati1.php --------------------
 <HTML>
 <HEAD>
 <TITLE> elaborazione testo</TITLE>
 </HEAD>
 <BODY>
 <?php
 $strrisultato = $_POST['strnome'];
 echo "hai inserito il testo è <b> $strrisultato </b>";
 ?>
 </BODY>
 </HTML>
 | 
 
 
 Modulo pulsanti di opzione con pagina chiamante e ricevente  
 
   
     | <HTML> <HEAD>
 <TITLE>modulopulsantiopzione</TITLE>
 </HEAD>
 <BODY>
 Quale nazione preferisci per le tue vacanze ?<BR>
 <FORM METHOD="post" ACTION="elaboradati2.php">
 <INPUT TYPE="radio" NAME="opVacanze" VALUE="Francia">
 Francia
 <BR>
 <INPUT TYPE="radio" NAME="opVacanze" VALUE="Spagna" CHECKED>
 Spagna
 <BR>
 <INPUT TYPE="radio" NAME="opVacanze" VALUE="Spagna">
 Inghilterra
 <BR>
 <BR>
 <INPUT TYPE="submit" NAME="Submit" VALUE="Invia">
 </FORM>
 </BODY>
 </HTML>
 
 
 -------------- file elaboradati2.php --------------------
 <HTML>
 <HEAD>
 <TITLE> elaborazione testo</TITLE>
 </HEAD>
 <BODY>
 <?php
 $strrisultato = $_POST['opVacanze'];
 echo "tu preferisci andare in vacanza in: <b> $strrisultato </b>";
 ?>
 </BODY>
 </HTML>
 | 
 
 
 Modulo casella di controllo con pagina chiamante e ricevente 
 
   
     | <HTML> <HEAD>
 <TITLE>modulocaselladicontrollo</TITLE>
 </HEAD>
 <BODY>
 <BR>
 Qual'è il tuo hobby ? <BR>
 <FORM METHOD="post" ACTION="elaboradati3.php">
 <INPUT TYPE="checkbox" NAME="chkHobby[]" VALUE="sport">
 Lo sport
 <BR>
 <INPUT TYPE="checkbox" NAME="chkHobby[]" VALUE="francobolli" CHECKED>
 I francobolli
 <BR>
 <INPUT TYPE="checkbox" NAME="chkHobby[]" VALUE="computer">
 Il computer
 <BR>
 <INPUT TYPE="submit" NAME="Submit" VALUE="Invia">
 </FORM>
 <BR>
 </BODY>
 </HTML>
 
 
 -------------- file elaboradati3.php --------------------
 <HTML>
 <HEAD>
 <TITLE> elaborazione testo</TITLE>
 </HEAD>
 <BODY>
  <?phpif (is_array ($_POST['chkHobby'])) {
 echo "I tuoi hobby sono: <br>";
 foreach ($_POST['chkHobby'] as $value) {
 echo "<b>$value</b> <br>";
 }
 }
 var_dump( $_POST['chkHobby']);
 ?>
 | 
 
 
 Modulo casella di riepilogo con pagina chiamante e ricevente 
 
   
     | <HTML> <HEAD>
 <TITLE>modulocaselladiriepilogo</TITLE>
 </HEAD>
 <BODY>
 Scegli il tuo libro preferito e la poesia preferita:<BR>
 <FORM METHOD="post" ACTION="elaboradati4.php">
 <SELECT NAME="cbLibro[]">
 <OPTION>I Promessi Sposi</OPTION>
 <OPTION>Orlando Furioso</OPTION>
 <OPTION>La Divina Commedia</OPTION>
 </SELECT>
 <BR>
 <BR>
 <SELECT NAME="lstPoesia[]" SIZE="3" MULTIPLE>
 <OPTION>La cavallina storna</OPTION>
 <OPTION>La pioggia nel pineto</OPTION>
 <OPTION>Il porto sepolto</OPTION>
 <OPTION>L´ isola</OPTION>
 <OPTION>La capra</OPTION>
 </SELECT>
 <BR>
 <BR>
 <INPUT TYPE="submit" NAME="Submit" VALUE="Invia">
 </FORM>
 </BODY>
 </HTML>
 
 
 
 -------------- file elaboradati4.php --------------------
 <HTML>
 <HEAD>
 <TITLE> elaborazione testo</TITLE>
 </HEAD>
 <BODY>
  <?phpif (is_array ($_POST['cbLibro'])) {
 echo "hai scelto il libro <br>";
 foreach ($_POST['cbLibro'] as $value) {
 echo "<b>$value</b> <br>";
 }
 }
  if (is_array ($_POST['lstPoesia'])) {echo "hai scelto la poesia <br>";
 foreach ($_POST['lstPoesia'] as $value) {
 echo "<b>$value </b> <br>";
 }
 }
 var_dump( $_POST['cbLibro']);
 echo "<BR>";
 var_dump( $_POST['lstPoesia']);
 ?>
  </BODY></HTML>
 
 | 
 
  Scarica gli esempi allegati 
  
Attenzione: gli esempi qui mostrati funzionano con copia ed incolla 
    a patto che vengano tolti tutti i caratteri superflui (colore, spaziatura, 
    ...) utili per una migliore visualizzazione sui browser, ma fastidiosi per 
    il parser PHP !
 Pagina precedente -  
          Pagina successiva