Page 1 sur 2
Probleme cookies
Posté : 17 déc. 2011, 09:56
par zerodegre
Bonjour je viens de mettre dans ma page connexion une commande pour garder la connexion active durant plusieur jours mais la j'ai un probleme j'ai pas d'erreur mais la connexion ne reste pas active il faut a chaque fois se reconnecter a l'ouverture de firefox.
Mon code ci dessous est t-il bon ?????
<?php
//Si lutilisateur est connecte, on le deconecte
if(isset($_SESSION['username']))
{
//On le deconecte en supprimant simplement les sessions username et userid
unset($_SESSION['username'], $_SESSION['userid']);
?>
<center><div class="titre3">Vous avez bien été déconnecté.</center><br />
<meta http-equiv="refresh" content="0; url=?page=espace_membre"/>
<?php
}
else
{
$ousername = '';
//On verifie si le formulaire a ete envoye
if(isset($_POST['username'], $_POST['password']))
{
//On echappe les variables pour pouvoir les mettre dans des requetes SQL
if(get_magic_quotes_gpc())
{
$ousername = stripslashes($_POST['username']);
$username = mysql_real_escape_string(stripslashes($_POST['username']));
$password = stripslashes($_POST['password']);
}
else
{
$username = mysql_real_escape_string($_POST['username']);
$password = $_POST['password'];
}
//On recupere le mot de passe de lutilisateur
$req = mysql_query('select password,id from users where username="'.$username.'"');
$dn = mysql_fetch_array($req);
//On le compare a celui quil a entre et on verifie si le membre existe
if($dn['password']==$password and mysql_num_rows($req)>0)
{
//Si le mot de passe es bon, on ne vas pas afficher le formulaire
$form = false;
//On enregistre son pseudo dans la session username et son identifiant dans la session userid
$_SESSION['username'] = $_POST['username'];
$_SESSION['userid'] = $dn['id'];
?>
<center><div class="titre3">Vous avez bien été connecté. Vous allez etre redirigé vers votre espace membre.</center><br /><br />
<meta http-equiv="refresh" content="0; url=?page=espace_membre"/>
<?php
}
else
{
//Sinon, on indique que la combinaison nest pas bonne
$form = true;
$message = 'l\'utilisateur ou le mot de passe que vous avez entré est incorrecte.';
}
}
else
{
$form = true;
}
if($form)
{
//On affiche un message sil y a lieu
if(isset($message))
{
echo '<div class="message">'.$message.'</div>';
}
//On affiche le formulaire
?>
<?php
if (isset($_POST['remember'])) {
setcookie('username', '$username', time() + 86400 /* Pour une journée */);
}
?>
<table width="650" border="0" align="center">
<tr>
<td align="center"><font color="white">Veuillez entrer vos identifiants pour vous connecter:</font></td>
</tr>
<tr><td> </td></tr>
<form action="?page=connexion" method="post">
<div align="center"></div>
<table width="350" border="0" align="center">
<p align="center">
</p><tr>
<td width="10%" class="alt1"><font face="Verdana" ><font color="white">*</font><font color="red"> Nom d'utilisateur :</font></td>
<td align="left" width="10%" class="alt2"><input type="text" name="username" id="username" value="<?php echo htmlentities($ousername, ENT_QUOTES, 'UTF-8'); ?>" /></td>
</tr>
<tr>
<td width="10%" class="alt1"><font face="Verdana" ><font color="white">*</font><font color="red"> Mot de passe :</font></td>
<td align="left" class="alt2"><input type="password" name="password" id="password" /></td>
</tr>
<table width="350" border="0" align="center">
<tr><td> </td></tr>
<tr><td><input type="checkbox" name="remember" value="1" /> <font color="white">Se souvenir de moi</font></td></tr>
<tr><td> </td></tr>
<table width="400" border="0" align="center">
<tr><td align="center">
<input type="submit" value="Connexion" />
</td></tr>
</form>
</div>
</table>
<?php
}
}
?>
Re: Probleme cookies
Posté : 17 déc. 2011, 11:12
par Ryle
Ton code défini bien un nouveau cookie sur le disque de l'utilisateur (avec setcookie), mais à aucun moment dans ton code tu ne viens lire $_COOKIE pour savoir si l'utilisateur dispose d'un cookie sur son poste et faire le traitement qui va bien pour l'authentifier automatiquement...

Re: Probleme cookies
Posté : 17 déc. 2011, 11:15
par zerodegre
merci de ta reponse mais quelle commande pour venir lire ?
Re: Probleme cookies
Posté : 17 déc. 2011, 11:22
par Ryle
Il suffit de faire appel à la variable $_COOKIE['le_nom_de_ton_cookie'] pour lire le contenu du cookie nommé le_nom_de_ton_cookie.
Ca fonctionne comme pour les sessions

Re: Probleme cookies
Posté : 17 déc. 2011, 11:36
par zerodegre
je dois placer apres cette commande ???? comme ci dessous ?
<?php
if (isset($_POST['remember'])) {
setcookie('username', 'blabla', time() + 86400 /* Pour une journée */);
$_COOKIE['username'];
}
?>
Re: Probleme cookies
Posté : 17 déc. 2011, 12:14
par zerodegre
faudrait -il pas que je lise le cookie via le header et l'ecrire dans connexion.PHP ???
exemple dans mon HEADER.PHP pour le bouton connexion j'ai ça :
<?php if(isset($_SESSION['username']))
{
$_COOKIE['username'];
echo '<li><a href="?page=espace_membre" class="parent"><span><font color="red">Espace membre</span></font></a></li>';
}
else
{
echo '<li><a href="?page=espace_membre" class="parent"><span><font color="green">Connexion</span></font></a></li>';
};
?>
et dans la page CONNEXION.PHP j'ai ça :
<?php
if (isset($_POST['remember'])) {
setcookie('username', 'blabla', time() + 86400 /* Pour une journée */);
}
?>
Mai ça marche pas des que je ferme firefox je dois me reloguer la je cale arffff
cette commande en plus n'ecrit pas apparemment, j'ai verifier dans firefox aucun cookies
<?php
if (isset($_POST['remember'])) {
setcookie('teste', 'blabla', time() + 365*24*3600 /* Pour un an */);
$_COOKIE['teste'];
}
?>
Re: Probleme cookies
Posté : 17 déc. 2011, 14:35
par Aureusms
As tu configurer Firefox pour accepter les cookies ? Différents cas sont possibles :
- cookies volatiles (qui disparaissent à la fermeture de Firefox comme les sessions)
- cookies qui peuvent inscrit sur le DD du visiteur
- pas de cookies
Ton code ci :
<?php
if (isset($_POST['remember'])) {
setcookie('username', 'blabla', time() + 86400 /* Pour une journée */);
}
?>
indique que si l'utilisateur envoi un formulaire qui comprend un champ "name" appellé "remember" alors un cookie est envoyé.
Rien n'indique que le cookies et lu par la suite.
Il faudrait aussi que tu testes si le cookies est bien visible :
if (!empty($_COOKIE['username']))
{
echo 'cookie bien arrivé : utilisateur confirmé';
}
else
{
echo 'pas utilisateur';
if (isset($_POST['remember'])) {
setcookie('username', 'blabla', time() + 86400 /* Pour une journée */);
}
}
Re: Probleme cookies
Posté : 18 déc. 2011, 00:12
par zerodegre
Bonsoir je viens de tester ton code est apparemment le cookies n'est pas créer j'ai toujours ecrit ==> pas d'utilisateur
voila comment j'ai inseré ça ==>
Code : Tout sélectionner
<?php
if (!empty($_COOKIE['teste']))
{
echo 'cookie bien arrivé : utilisateur confirmé';
}
else
{
echo 'pas utilisateur';
if (isset($_POST['remember'])) {
setcookie('teste', 'moi', time() + 86400 /* Pour une journée */);
}
}
?>
<table width="650" border="0" align="center">
<tr>
<td align="center"><font color="white">Veuillez entrer vos identifiants pour vous connecter:</font></td>
</tr>
<tr><td> </td></tr>
<form action="?page=connexion" method="post">
<div align="center"></div>
<table width="350" border="0" align="center">
<p align="center">
</p><tr>
<td width="10%" class="alt1"><font face="Verdana" ><font color="white">*</font><font color="red"> Nom d'utilisateur :</font></td>
<td align="left" width="10%" class="alt2"><input type="text" name="username" id="username" value="<?php echo htmlentities($ousername, ENT_QUOTES, 'UTF-8'); ?>" /></td>
</tr>
<tr>
<td width="10%" class="alt1"><font face="Verdana" ><font color="white">*</font><font color="red"> Mot de passe :</font></td>
<td align="left" class="alt2"><input type="password" name="password" id="password" /></td>
</tr>
<table width="350" border="0" align="center">
<tr><td> </td></tr>
<tr><td><input type="checkbox" name="remember" value="1" /> <font color="white">Se souvenir de moi</font></td></tr>
<tr><td> </td></tr>
<table width="400" border="0" align="center">
<tr><td align="center">
<input type="submit" value="Connexion" />
</td></tr>
</form>
Re: Probleme cookies
Posté : 18 déc. 2011, 01:20
par zerodegre
Toujour aucun enregistrement du cookie Je vous remet ma page entiere CONNEXION.PHP
Code : Tout sélectionner
<?php
include('config.php');
?>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td style="width:126px; height:117px;" align="left" valign="top"><img src="./images/cat_top_left.png" style="width:126px; height:117px;" alt="" border="0" /></td>
<td width="100%" style="background-image:url(./images/cat_bk.jpg)" align="left">
<div valign="middle"><center>
<strong><img src="images/spacer.gif" width="100" height="0" ><font color="white">Connexion à votre espace personnel</strong></div></font>
</td>
<td style="width:258px;" align="right" valign="top"><img src="./images/cat_top_right.png" style="width:258px; height:117px;" alt="" border="0" /></td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" border="0" width="100%" height="26" align="center">
<tr>
<td valign="top" style="background-image:url(./images/cat_left.jpg)">
<img src="./images/cat_left.jpg" style="width:47px; height:22px;" alt="" border="0" /></td>
<td width="100%" valign="top" style="background-image:url(./images/bk_cat.jpg)">
<?php
//Si lutilisateur est connecte, on le deconnecte
if(isset($_SESSION['username']))
{
//On le deconecte en supprimant simplement les sessions username et userid
unset($_SESSION['username'], $_SESSION['userid']);
?>
<center><div class="titre3">Vous avez bien été déconnecté.</center><br />
<meta http-equiv="refresh" content="0; url=?page=espace_membre"/>
<?php
}
else
{
$ousername = '';
//On verifie si le formulaire a ete envoye
if(isset($_POST['username'], $_POST['password']))
{
//On echappe les variables pour pouvoir les mettre dans des requetes SQL
if(get_magic_quotes_gpc())
{
$ousername = stripslashes($_POST['username']);
$username = mysql_real_escape_string(stripslashes($_POST['username']));
$password = stripslashes(md5($_POST['password']));
}
else
{
$username = mysql_real_escape_string($_POST['username']);
$password = $_POST['password'];
}
//On recupere le mot de passe de lutilisateur
$req = mysql_query('select password,id from users where username="'.$username.'"');
$dn = mysql_fetch_array($req);
//On le compare a celui quil a entre et on verifie si le membre existe
if($dn['password']==$password and mysql_num_rows($req)>0)
{
//Si le mot de passe es bon, on ne vas pas afficher le formulaire
$form = false;
//On enregistre son pseudo dans la session username et son identifiant dans la session userid
$_SESSION['username'] = $_POST['username'];
$_SESSION['userid'] = $dn['id'];
?>
<center><div class="titre3">Vous avez bien été connecté. Vous allez etre redirigé vers votre espace membre.</center><br /><br />
<meta http-equiv="refresh" content="1; url=?page=espace_membre"/>
<?php
}
else
{
//Sinon, on indique que la combinaison nest pas bonne
$form = true;
$message = 'l\'utilisateur ou le mot de passe que vous avez entré est incorrecte.';
}
}
else
{
$form = true;
}
if($form)
{
//On affiche un message sil y a lieu
if(isset($message))
{
echo '<div class="message">'.$message.'</div>';
}
//On affiche le formulaire
?>
<?php
if (!empty($_COOKIE['teste']))
{
echo 'cookie bien arrivé : utilisateur confirmé';
}
else
{
echo 'pas utilisateur';
if (isset($_POST['remember'])) {
setcookie('teste', 'moi', time() + 86400 /* Pour une journée */);
}
}
?>
<html>
<table width="650" border="0" align="center">
<tr>
<td align="center"><font color="white">Veuillez entrer vos identifiants pour vous connecter:</font></td>
</tr>
<tr><td> </td></tr>
<form action="?page=connexion" method="post">
<div align="center"></div>
<table width="350" border="0" align="center">
<p align="center">
</p><tr>
<td width="10%" class="alt1"><font face="Verdana" ><font color="white">*</font><font color="red"> Nom d'utilisateur :</font></td>
<td align="left" width="10%" class="alt2"><input type="text" name="username" id="username" value="<?php echo htmlentities($ousername, ENT_QUOTES, 'UTF-8'); ?>" /></td>
</tr>
<tr>
<td width="10%" class="alt1"><font face="Verdana" ><font color="white">*</font><font color="red"> Mot de passe :</font></td>
<td align="left" class="alt2"><input type="password" name="password" id="password" /></td>
</tr>
<table width="350" border="0" align="center">
<tr><td> </td></tr>
<tr><td><input type="checkbox" name="remember" value="1" /> <font color="white">Se souvenir de moi</font></td></tr>
<tr><td> </td></tr>
<table width="400" border="0" align="center">
<tr><td align="center">
<input type="submit" value="Connexion" />
</td></tr>
</form>
</div>
</table>
<?php
}
}
?>
</td>
<td align="right" valign="top" style="background-image:url(./images/cat_right.jpg)"><img src="./images/cat_right.jpg" style="width:46px; height:22px;" border="0" /></td>
</tr>
</table>
<table style="width:100%; height:24px;" border="0" cellpadding="0" cellspacing="0">
<tr>
<td style="width:125px; height:151px;" valign="top"><img src="./images/cat_down_left.jpg" style="width:125px; height:151px;" alt="" border="0" /></td>
<td width="100%" valign="top" style="background-image:url(./images/cat_down_bk.jpg)" align="left"> </td>
<td style="width:258px;" align="right" valign="top"><img src="./images/cat_down_right.png" style="width:258px; height:151px;" alt="" border="0" /></td>
</tr>
</td>
</tr>
</table></html></body>
Re: Probleme cookies
Posté : 18 déc. 2011, 10:37
par Ryle
setcookie() définit un cookie qui sera envoyé avec le reste des en-têtes. Comme pour les autres en-têtes, ils doivent être envoyés avant toute autre sortie. Cela veut dire qu'il te faut appeler cette fonction avant tout envoi de code au navigateur (balise html, espaces, ou retours à la ligne).
Il faudrait donc déplacer ton bloc qui définit le cookie dans le bloc php que tu as en haut de ton script :
<?php
include('config.php');
// code à inclure ici par ex.
?>
Re: Probleme cookies
Posté : 18 déc. 2011, 11:00
par zerodegre
donc j'ai deplacé vers le haut comme tu ma dit mais la j'ai une belle erreur
comme ceci
<?php
include('config.php');
if (!empty($_COOKIE['teste']))
{
echo 'cookie bien arrivé : utilisateur confirmé';
}
else
{
echo 'pas utilisateur';
if (isset($_POST['remember'])) {
setcookie('teste', 'moi', time() + 86400 /* Pour une journée */);
}
}
?>
pas utilisateur
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files (x86)\VertrigoServ\www\site\header.php:36) in C:\Program Files (x86)\VertrigoServ\www\site\espace_membre\connexion.php on line 11
Re: Probleme cookies
Posté : 18 déc. 2011, 12:01
par Ryle
Je n'ai pas fait attention mais la encore c'est parce que tu envois des données au navigateur avant de faire le set cookie :
// echo 'pas utilisateur'; --> il faut virer ce echo ou le déplacer après le setcookie
if (isset($_POST['remember'])) {
setcookie('teste', 'moi', time() + 86400 /* Pour une journée */);
echo 'cookie ajouté, il sera disponible au prochain chargement de la page';
}
Et euh... quand tu ouvres la page, tu as bien l'attribut "remember" qui est envoyé en post ?
En principe comme ça tu devrais pouvoir définir le cookie... restera plus ensuite qu'à l'utiliser quand tu le trouves et que l'utilisateur n'est pas connecté

Re: Probleme cookies
Posté : 18 déc. 2011, 12:13
par zerodegre
Je n'ai pas fait attention mais la encore c'est parce que tu envois des données au navigateur avant de faire le set cookie :
// echo 'pas utilisateur'; --> il faut virer ce echo ou le déplacer après le setcookie
if (isset($_POST['remember'])) {
setcookie('teste', 'moi', time() + 86400 /* Pour une journée */);
echo 'cookie ajouté, il sera disponible au prochain chargement de la page';
}
Et euh... quand tu ouvres la page, tu as bien l'attribut "remember" qui est envoyé en post ?
En principe comme ça tu devrais pouvoir définir le cookie... restera plus ensuite qu'à l'utiliser quand tu le trouves et que l'utilisateur n'est pas connecté

j'ai rectifié par ta commande mais toujours cette satané erreur et le cookie n'est pas créer, je commence a perdre espoire j'ai retourner le probleme de partout arfffff
Re: Probleme cookies
Posté : 18 déc. 2011, 21:53
par zerodegre
bon voila apres pas mal de recherche je viens de me rendre compte que en mettant le code ci dessous dans le HEADER.PHP il ecrit bien le cookies mais le probleme maintenant et que lorsque je ferme firefox le cookies disparait.Pourquoi donc il ne laisse pas la session ouverte des la fermeture de firefox ?
voici le bout de code que jai mit dans le header.php et je n'est rien mit dans la page connexion.php
<?php
//On demarre les sessions pour l'espace membre
session_start();
if (isset($_POST['remember'])) {
setcookie('site', 'teste', (time() + 3600));
}
echo $_COOKIE['site'];
Re: Probleme cookies
Posté : 19 déc. 2011, 10:17
par xTG
Tu parles bien du cookie et non de la session ?
Car les cookies de session sont détruits à la fermeture du navigateur firefox (c'est un comportement normal du navigateur), par contre les autres ne le sont pas tant qu'ils sont valides.