Hello !
Nous allons voir comment à partir d'un formulaire, enregistrer le pseudo d'un visiteur dans un cookie puis se resservir de cette information.
il va nous falloir créer 3 fichiers :
form.php : le formulaire
form_traitement.php : pour traiter les données du formulaire
cookie.php : pour afficher l'information contenue dans le cookie.
C'est parti !
// fichier form.php
<HTML>
<BODY>
<?php
// si le cookie existe et n'est pas vide, on affiche sa valeur
if ($_COOKIE['pseudo'] != "") {
echo 'Bonjour '.$_COOKIE['pseudo'].' !';
}
/*
si le cookie n'existe pas, on affiche un formulaire permettant au visiteur de saisir son pseudo
*/
else {
echo'<TABLE ALIGN="center">';
// on fait pointer le formulaire vers la page traitant les données
echo'<FORM ACTION="./form_traitement.php" METHOD="post">';
echo'<B>Pseudo : </B><INPUT TYPE="text" NAME="pseudo" SIZE="40"><BR><BR>';
echo'<INPUT TYPE="submit" VALUE="Poster" SIZE="10">';
echo'</FORM></TABLE>';
}
?>
</BODY>
</HTML>
// fichier form_traitement.php
<?
if (isset($_POST['pseudo']))
$pseudo = $_POST['pseudo'];
else
$pseudo = "";
// fonction nous permettant de faire des redirections
function redirection($url){
if (Headers_sent()){
print('<meta http-equiv="refresh" content="0;URL='.$url.'">');
else {
HEADer("Location: $url");
}
}
// on teste le contenu de la variable $pseudo
if ($pseudo=="") {
echo '<BODY onLoad="alert(\'Le pseudo est vide...\')">';
redirection('./form.php');
exit;
}
// si tout est bon, on peut créer le cookie
else {
// on définit une durée de vie de notre cookie (en secondes), un an dans ce cas
$temps = 365*24*3600;
/*
on envoie un cookie de nom 'pseudo' portant la valeur de la variable $pseudo,
c'est-à-dire la valeur qu'a saisi la personne qui a rempli le formulaire et on limite
son champ d'action au domaine qui l'a créé avec "/" (le cookie ne pourra être lu que par un script appartenant au site qui l'a créé)
*/
setcookie("pseudo",$pseudo, time() + $temps,"/");
/*
on redirige vers cookie.php qui va afficher l'information que l'on vient d'inscrire dans le cookie
*/
redirection('./cookie.php');
// on stop le script.
exit;
}
?>
// fichier cookie.php
<HTML>
<HEAD>
<TITLE>Page de récupération du cookie</TITLE>
</HEAD>
<BODY>
<?php
if ($_COOKIE['pseudo'])
echo 'Votre pseudo est '.$_COOKIE['pseudo'];
else
echo 'Aucun cookie présent';
?>
</BODY>
</HTML>
ATTENTION :
Le setcookie, comme le session_start(), doit être positionné dans le script avant toute sortie HTML.
Vala, vous savez désormais créer un cookie et y insérer une variable que vous pouvez appeler depuis n'importe lequel de vos scripts ... mais comment insérer plusieurs variables dans le même cookie ? C'est ce que je vais vous expliquer tout de suite.
A présent, nous allons voir comment à partir d'un formulaire, enregistrer le pseudo et l'âge d'un visiteur dans un cookie puis se resservir de ces informations.
il va nous falloir créer 3 fichiers :
form.php : le formulaire
form_traitement.php : pour traiter les données du formulaire
cookie.php : pour afficher les informations contenues dans le cookie.
C'est re-parti !
// fichier form.php
<HTML>
<BODY>
<?php
// si le cookie existe et n'est pas vide, on affiche sa valeur
if ($_COOKIE['pseudo'] != "")
echo 'Bonjour '.$_COOKIE['pseudo'].' !';
/*
si le cookie n'existe pas, on affiche un formulaire permettant au visiteur de saisir
son pseudo et son âge
*/
else {
echo'<TABLE ALIGN="center">';
// on fait pointer le formulaire vers la page traitant les données
echo'<TR><TD>';
echo'<FORM ACTION="./form_traitement.php" METHOD="post">';
echo'<B>Pseudo : </B><INPUT TYPE="text" NAME="pseudo" SIZE="40"><BR>';
echo'</TD><TD>';
echo'<B>Age : </B><INPUT TYPE="text" NAME="age" SIZE="3"><BR><BR>';
echo'</TD></TR>';
echo'<TR><TD COLSPAN="2">';
echo'<INPUT TYPE="submit" VALUE="Poster" SIZE="10">';
echo'</FORM></TABLE>';
}
?>
</BODY>
</HTML>
// fichier form_traitement.php
<?
/*
on initialise les variables $pseudo et $age (obligatoire en register_global = off avec EasyPHP 1.7 par exemple)
*/
if (isset($_POST['pseudo']))
$pseudo = $_POST['pseudo'];
else
$pseudo = "";
if (isset($_POST['age']))
$age = $_POST['age']; else $age = "";
// fonction nous permettant de faire des redirections
function redirection($url){
if (headers_sent()){
print('<meta http-equiv="refresh" content="0;URL='.$url.'">');
}
else {
HEADer("Location: $url");
}
}
// on teste le contenu de la variable $pseudo
if ($pseudo=="") {
echo '<BODY onLoad="alert(\'Le pseudo est vide...\')">';
redirection('./form.php');
exit;
}
// on teste le contenu de la variable $age
if ($age=="") {
echo '<BODY onLoad="alert(\'Le champ âge est vide...\')">';
redirection('./form.php');
exit;
}
// si tout est bon, on peut créer le cookie
else {
// on définit une durée de vie de notre cookie (en secondes), un an dans ce cas
$temps = 365*24*3600;
/*
on envoie un cookie de nom pseudo portant les valeurs des variables $pseudo et $age séparée par un &, c'est-à-dire les valeurs qu'a saisi la personne qui a rempli le formulaire et on limite son champ d'action au domaine qui l'a créé avec "/" (le cookie ne pourra être lu que par un script appartenant au site qui l'a créé)
*/
setcookie("pseudo",$pseudo."&".$age, time() + $temps,"/");
/*
on redirige vers cookie.php qui va afficher l'information que l'on vient d'inscrire dans le cookie
*/
redirection('./cookie.php');
// on termine le script courant
exit;
}
?>
// fichier cookie.php
<HTML>
<HEAD>
<TITLE>Page de récupération du cookie</TITLE>
</HEAD>
<BODY>
<?php
if ($_COOKIE['pseudo'])
{
$tableau=explode("&",$_COOKIE['pseudo']); // explosion ...
$pseudo=$tableau[0];
$age=$tableau[1];
echo "votre pseudo est $pseudo et vous avez $age ans";
}
else {
echo 'Aucun cookie présent';
}
?>
</BODY>
</HTML>
Vala, vous savez désormais créer un cookie et y insérer plusieurs variables puis les faire lire par un de vos scripts.
@+...