Cookie présent, mais non reconnu

Domi
Invité n'ayant pas de compte PHPfrance

16 juin 2005, 15:16

Bonjour,

Voici une portion de mon code :
...
print("<BR><BR>".$param["text_form_user"]." : <INPUT type=text name=user maxlength=10><BR>");
...
J'ai effectué une modification de façon à afficher le login du visiteur au lieu du champ <input...> à condition qu'un cookie soit présent sur la machine :
...
if (isset($_COOKIE['identifiant']))
{
print ("<BR><BR>".$param["text_form_user"]."<b> : ".$_COOKIE['identifiant']."</b><input type=hidden name=user value=\"".$_COOKIE['identifiant']."\"><br>");
}
else
{
print("<BR><BR>".$param["text_form_user"]." : <INPUT type=text name=user maxlength=10><BR>");
}
...
Le cookie est pourtant bien présent, mais j'obtiens tjs le champ <input...> !

Pourquoi ?

Merci d'avance.

ViPHP
fab
ViPHP | 2657 Messages

16 juin 2005, 15:22

bah là tu demandes a php de t'afficher le input si le cookie est présent donc c'est normal que tu l'obtiennes, rajoutes un ! devant un isset pour l'inverse mais dans ce cas tu pourras pas te servir de la valeur du cookie dans l'input puisqu'il n'existe pas

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

16 juin 2005, 15:26

quelle syntaxe utilise tu pour ajouter le cookie ? (on peut limiter la portée d'un cookie a un répertoire donné)
est tu sur le même serveur (si tu as des sous domaines, le cookie peut pas passer d'un domaine a l'autre)

je te conseille l'utilisation de l'extention LiveHttpHeaders pour firefox, tu verra si le cookie est bien envoyé du client vers le serveur

et coté serveur, de faire ca en début de page :
<pre><? var_dump($_COOKIE); ?></pre>

Domi
Invité n'ayant pas de compte PHPfrance

16 juin 2005, 15:30

Bonjour Cerber :

J'utilise :
$expire = 365*24*3600; 
setcookie("identifiant",$_POST['identifiant'],time()+$expire); 
setcookie("email",$data['email'],time()+$expire); 
Ce code est utilisé pour mon forum (dans le rép /forum).

En revanche, le code qui plante est utilisé dans le rép /chat.

Domi
Invité n'ayant pas de compte PHPfrance

16 juin 2005, 15:39

De plus, je comprends pas, car dans mon forum, j'utilise :
if (isset($_COOKIE['identifiant'])) 
{ 
echo " <td><b>".$_COOKIE['identifiant']."</b><input type=\"hidden\" name=\"identifiant\" value=\"".$_COOKIE['identifiant']."\"></td>"; 
} 
else 
{ 
echo " <td><input type=\"text\" size=\"18\" maxlength=\"30\" style='color: #000000; border: 1 solid #659294' name=\"identifiant\" value=\"".$_COOKIE['identifiant']."\"></td>"; 
} 
...en gros la même syntaxe, et là ca fonctionne ![/code]

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

16 juin 2005, 15:59

bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
le path est le quatrieme parametre, tu l'utilise pas donc par défaut ca devrais etre '/' autrement dit tout le serveur
=> pas de probleme coté path ni expire (ta limite est assez grandze ;) )

par contre, as tu controlé ton $_POST['identifiant'] avant de le mettre dans le cookie ?? le probleme c'est que si $_POST['identifiant'] est vide ca va pas créer un cookie avec chaine vide comme valeur, ca va supprimer le cookie.

Sinon t'as essayé le livehttpheaders et le var_dump ?

Domi
Invité n'ayant pas de compte PHPfrance

16 juin 2005, 16:00

Merci :wink: ca fonctionne avec :
setcookie("identifiant",$_POST['identifiant'],time()+$expire,"/"); 
A bientôt

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

16 juin 2005, 16:23

:? :( grrrrmbl encore une fois j'aurais du tourner sept fois ma langue dans ma bouche avant de dire une connerie ....

Content que ca marche domi :lol: :p

@+++