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>
<?php
if (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>
<?php
if (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