Probléme de cookies

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probléme de cookies

par angebleu17 » 06 déc. 2007, 11:38

Oui j'ai modifié la petite erreur avec l'apostrophe.

Quand je fait print_r($_COOKIE), cela m'affiche bien les cookies créé avec les bonnes valeurs.

J'ai ajouté isset() pour la vérifier si une variable est défini.

Merci pour tes conseils :wink:

Edit : J'ai trouvé mon erreur :
while($val = mysql_fetch_object($req))  
{ 
$passe_membre = $val2->passe_membre; 
} 
 
J'ai mis $val2 alors qu'il fallait mettre $val.

par Ryle » 06 déc. 2007, 11:18

J'vois pas vraiment ce qui pourrait ne pas fonctionner... je suppose que tu as corrigé l'erreur (apostrophe absente) ici : if ($_POST['memorise] == 'oui') //case a cocher

As-tu vérifié dans ton dossier cookies qu'il était toujours présent (et qu'il avait été bien créé avec les bonnes valeurs) ?
Affiche un print_r($_COOKIE)


Faute de mieux, je te recommande pour le moment d'utiliser isSet() pour vérifier si une variable est définie et pas seulement de tester sa valeur (que ce soit un cookie ou une donnée de session). Tu devrais (non d'ailleurs, tu dois absolument !) indenter ton code, il est impossible de savoir où se termine une accolade sans devoir les compter une par une. Et enfin, préfère les tags <?php aux shorts open tags qui ne seront pas toujours autorisés sur les serveurs où ton site sera installé ;)

par gadgino » 06 déc. 2007, 11:15

<?
if ($_POST['memorise] == 'oui') //case a cocher
{
$pseudo =$_POST['pseudo'];
$passe =$_POST['passe'];
        
$temps = 3650*24*3600;  
                     
//envoie cookie
setcookie ("pseudo", $pseudo, time() + $temps); 
setcookie ("passe", $passe, time() + $temps); 
}
?>
MAnque un " ' " dans:
if ($_POST['memorise <- ici

Probléme de cookies

par angebleu17 » 06 déc. 2007, 10:34

Bonjour,

Sur mon site j'ai un espace membre, sur ma page connection j'ai une case à cocher pour savoir si l'utilisateur veut mémoriser ses info de connection, donc pour cela j'utilise des cookies. Voici mon code pr la page connection :
<?
if ($_POST['memorise] == 'oui') //case a cocher
{
$pseudo =$_POST['pseudo'];
$passe =$_POST['passe'];
		
$temps = 3650*24*3600;  
					 
//envoie cookie
setcookie ("pseudo", $pseudo, time() + $temps); 
setcookie ("passe", $passe, time() + $temps); 
}
?>
Donc les cookies sont bien enregistré, et donc ensuite dans toute mes pages j'ai mis un code qui enregistre lesi nfo dans des sessions si le cookies existe, voici le code :
<?
if (!$_SESSION['pseudo'] && !$_SESSION['passe']) //si pas de session on prend les cookies s'il y en a.
{
if (($_COOKIE['pseudo']) && ($_COOKIE['passe']))
{
$req = mysql_query("SELECT * FROM membres WHERE pseudo_membre = '".$_COOKIE['pseudo']."'") or die (mysql_error()); //Selectionne infos du concour.
$total = mysql_num_rows($req);
		
if($total > 0 )
{	
while($val = mysql_fetch_object($req)) 
{
$passe_membre = $val2->passe_membre;
}
				
//On compare les 2 chaînes (mot de passe de la base de données et mot de passe dans le cookie), si égal à 0, les chaines sont identiques
if (strcmp($_COOKIE['passe'],$passe_membre)==0)
{		 
//on met les valeur dans des session 
$_SESSION['pseudo'] = $_COOKIE['pseudo'];
$_SESSION['passe'] = $_COOKIE['passe'];
$_SESSION['id_membre'] = $val2->id_membre;
}
}
 }
}
?>
Mais je pense que ça ne marche pas trés bien, car lorsque je me connecte et que je coche la case pour mémoriser mes infos, au bout de quelques heures (fin de journée si je me suis connecté du matin) je ne suis plus connecté. J'ai bien activé les cookies sur mon navigateur. A quoi est du ce probléme ? Y a t-il une erreur dans mon code ?