Messaggio sab ago 08, 2009 3:37 pm

[PHP DA ZERO - LEZIONE 11]Sessioni e Cookie

Le sessioni e i cookie sono entrambe variabili speciali in cui è possibile immagazzinare dati per un certo periodo di tempo.

Se io creo una variabile normale,
il valore varrà solo per la pagina in cui la variabile è definita;

invece se setto un cookie o creo una sessione il valore di quel cookie e di quella sessione varrà per un certo tempo(anche lungo) in tutte le pagine del mio sito.

Iniziamo parlando dei cookie.

Per creare un cookie si usa una semplice funzione di nome setcookie();
(La funzione setcookie ha la seguente sintassi:

setcookie("nomecookie", "valorecookie", "tempocookie");
)
,

dopodichè per richiamare il cookie basterà stampare la variabile $_COOKIE(In questo modo:
  Codice:
<?php
echo $_COOKIE['nomecookie'];
?>

)

Ma andiamo nella pratica.

  Codice:
<?php

$name="Matteo";

setcookie("nome", $name, time() + 3600); //Creo un cookie che durerà 3600 secondi, che si chiama "nome" e che ha come valore il valore della variabile $name, cioè Matteo


echo $_COOKIE['nome']; //Mostro il valore del cookie

?>


Adesso ogni volta che in una pagina del mio sito scrivero',
mi apparirà la scritta "Matteo", finchè il cookie non scadrà(Cioè fra 3600 secondi).:

  Codice:
<?php
echo $_COOKIE['nome'];
?>


Per "distruggere" il cookie, cioè eliminarlo prima della scadenza.

Si può impostare un tempo di durata "negativo":

  Codice:
<?php
setcookie("nome", "", time() - 3600);
?>


Parliamo adesso delle Sessioni.

In realtà cookie e sessioni si possono usare indistintamente.

Si chiamano e si usano diversamente, ma in pratica servono alla stessa cosa.

Per le sessioni si usano alcune funzioni:

session_start(); (Questa funzione bisogna usarla obbligatoriamente prima di settare una funzione )

session_destroy(); ( Con questa funzione vegono distrutte/eliminate tutte le sessioni)

Una sessione si definisce in questo modo:

$_SESSION['nomesessione'] = "valore";

e si richiama in questo modo:

  Codice:
<?php
echo $_SESSION['nomesessione'];
?>


Per capirci meglio, ecco il codice completo:

  Codice:
<?php

session_start(); //Funzione che "crea un terreno" adatto alla definizione delle sessioni

$_SESSION['username'] = "Matteo"; //Stabiliamo la sessione di nome username

echo $_SESSION['username']; //Mostriamo il valore della sessione username

?>


Se vogliamo distruggere la sessione, come prima anticipato:

  Codice:
<?php
session_start();
session_destroy();
?>


Tramite le sessione e i cookie che abbiamo appena di visto, con un po' di logica si possono sviluppare sistemi di registrazione e login, ma anche semplici aree private, sfruttando i dati provenienti da form($_POST)


pagina.php


  Codice:
<form action="pagina.php" method="post">
<input type="text" name="username"/>
<input type="password" name="pass"/>
<input type="submit" name="login" value="Login"/>
</form>

<?php

if ($_POST['login']){

$password="123"; //Password per il login

if  ($_POST['pass'] == $password){
//Se il dato proveniente dal campo username del form e il dato è uguale alla variabile username e il dato //proveniente dal campo pass del form è uguale alla variabile password

setcookie("username", $_POST['username'], time() + 3600);
//Crea un cookie di nome username, che contenga l'username inserito nel campo username del form

setcookie("login", "ok", time() + 3600);
//Crea un cookie di nome login, di valore "ok" e che duri 3600 secondi

} else { //Altrimenti
echo "Username e/o Password errati. Riprova"; //Fai apparire questo messaggio
}

}


?>


Nella prossima lezione incomincieremo a parlare di database mysql.