Forum Clubic

Gestion de cookie : Problème [RESOLU]

Bonjour à tous,

Voilà mon problème, sur mon site l’utilisateur peux choisir une connexion automatique à la prochaine visite, cette action crée pendant la connection un cookie. A une nouvelle ouverture de la page, je test en haut de page l’existance ou non du cookie et je connect l’utilisateur en fonction de la présence ou non de ce cookie.

Le problème est que ceci marche parfaitement en local, mais pas du tout sur le ftp distant. Je vous propose donc de bien vouloir vous pencher sur ce code sachant que ma version php local est 4.3.3 et celle de mon site distant est 4.3.10-2.

Ligne présente dans le fichier de connection après que l’utilsateur ai entré son login et mdp et ai choisi l’option de connexion automatique :

if($_POST[“cookie”]==1)
{
$duree = 3652460*60; $cookie=setcookie(“ToTo”,$login,time()+$duree,"/");
}

Vérification au début de chaque page :

if(isset($HTTP_COOKIE_VARS[“ToTo”]) && $HTTP_COOKIE_VARS[“ToTo”]!="")
{
$utilisateur=$HTTP_COOKIE_VARS[“ToTo”];
$connect=1;
}

Pourquoi utiliser $_POST et ne pas utiliser $_COOKIE (au lieu de $HTTP_COOKIE_VARS) ?

euh c’est just un mauvais copier coler :slight_smile: Sinon je viens d’essayer (au cas ou) avec le tableau $_COOKIE et ça ne marche pas non plus.

Ce qui est étrange c’est que les cookies sont bien créé en local dans le dossier cookie de windows, mais sur le site distant ca ne crée pas les cookies et donc n’autorise pas la connection automatique.

Evidemment, IE…

http://fr.php.net/manual/fr/function.setcookie.php

A tout hasard, essaye un print_r( $_COOKIE ) et sinon, faut voir en virant le path (je doute que ça change grand chose) ou voir où tu fais ton test par rapport à la création de ton cookie.

Donc j’ai essayé le print_r( $_COOKIE ), et en effet il m’affiche le cookie uniquement quand j’utilise le site avec easyphp en local. Mais sur le serveur distant il ne m’indique pas le cookie. Pour se qui est du path ça n’a effectivement rien changé :frowning:

Au niveau d’une possible erreur dans la condition pour créer le cookie, je ne vois pas trop ou peux se trouver le problème. Je vous donne donc les codes en question, si ça peux vous aider.

Merci beaucoup pour ton aide Sans-Nom en tout cas :slight_smile:

Le formulaire de connexion :

[cpp]



Connection Auto
[/cpp]

Le fichier login.php appelé par le formulaire :

[cpp]

<?php if($_POST["login"] != "" && $_POST["mot_de_passe"] != "") { $login = $_POST["login"] ; $pass = md5($_POST["mot_de_passe"]) ; //création de la requête SQL: $sql = "SELECT clt_id FROM CLIENT WHERE clt_pseudo = '".$login."' AND clt_passwd = '".$pass."'" ; $result = mysql_query($sql); /* on compte le nombre de résultats */ $res = mysql_num_rows($result); /* Si le compte n'existe pas => page d'erreur */ if($res==0) { redirect_url("index.php?page=2&error=3"); } else { //enregistrement d'une variable de session, ici le login de l'utilisateur: $_SESSION["login"] = $login ; //gestion cookies if($_POST["cookie"]=="1") { $duree = 365*24*60*60; $cookie=setcookie("EpicerieEnLigne",$login,time()+$duree); } redirect_url("index.php"); } } else { redirect_url("index.php?page=2&error=4"); } ?>

[/cpp]

PROBLEME RESOLU : le problème vennait que je fesais un session_start() avant de faire le set_cookie().

Merci beaucoup à toi et à ton lien vers le descriptif de la fonction qui m’a beaucoup aidé :slight_smile: