php 5.3.8 problème de variable avec setcookie

  • Auteur de la discussion Auteur de la discussion ybet
  • Date de début Date de début
WRInaute accro
Comme ca deux heures que je cherche, je passe à l'équipe.

Pour un développement personnel, j'utilise la fonction setcookie('nom',$variable,time()+3600); pour enregistrer le login et mot de passe.
Sur EasyPHP 5.3.2, tout fonctionne. Par contre sur l'hebergement en version 5.3.8. en faisant echo $_COOKIE['nom']; à la ligne suivante, je reçoit l'erreur
Notice: Undefined index: nom in /home/ybet/www/index.php on line 42.

Le problème ne vient pas de l'envoi de la commande avant le <head> ou d'un quelquonque affichage préalable: si je remplace sur l'hébergement setcookie('nom','variable',time()+3600); donc uniquement du texte et pas de variable, là ca fonctionne sans problème.

Cherché partout sans rien comprendre pourquoi ca bloque avec une $variable et passe avec 'texte'. Un bug de PHP 5.3.8, une configuration du php.ini sur le serveur?

Merci d'avance pour le coup de main.
 
WRInaute impliqué
Enregistrer le login et le mot de passe dans un cookie, c'est pas très bon ça. Si quelqu'un parvient à lire ces cookies, il récupère les identifiants du site.
 
WRInaute accro
$variable est créée en reprenant $variable = $nom.'-pwv-'.$code_passe_crypte.'numero_utilisateur'.$numero;

sous easyphp, ca fonctionne même en mettant directement la liste dans la fonction Setcookie.
en gros,
Code:
setcookie ('ybet','ybet', time()+60);
echo $_COOKIE['ybet'];
fonctionne sans problème mais
Code:
$nom="ybet";
setcookie ('ybet',$nom, time()+60);
echo $_COOKIE['ybet'];
ne fonctionne pas.
Je peux redescendre la version de PHP sur le serveur (pas encore essayé mais cette partie du développement fonctionne sur un autre serveur en version inférieur.) Par contre, faudra bien y passer un jour ou l'autre.

Enregistrer le login et le mot de passe dans un cookie, c'est pas très bon ça. Si quelqu'un parvient à lire ces cookies, il récupère les identifiants du site.
Dans la fonction, les mots de passe sont cryptés dans le cookies et dans la base de donnée. En plus le mot de passe n'est pas défini par l'utilisateur mais par par une fonction personnelle, ca donne des mots de passe du genre BAY5wrSXia.
 
WRInaute accro
Et les variables de type login et passe, tu les récupères comment ? Ce ne serait pas tout simplement une histoire de register_globals ?
 
WRInaute accro
Pour les récupérer, c'est en provenant d'un formulaire de connexion uniquement.

Par contre, finalement aucune commande setcookie ne passe sur l'hébergement :evil: (mais tout passe en local) . J'ai comparé ce qui me semblait lié dans les deux versions de phpinfo(), tout semble identique. Repassé en php 5.0 sur l'hébergement ... idem.

Configurer register_globals on est plutôt dangereux et semble obsolète pour php 5.3. (en plus)
Pourtant ca vient bien de la configuration du serveur, à moins que la configuration oblige l'utilisation de sessions.

???????
 
WRInaute accro
Vous voulez des nouvelles: mon PC sous Windows 7, la fonction setcookie fonctionne parfaitement sur l'hébergement avec FIREFOX et PAS avec Explorer 8.0. (y compris en modifiant les options, désactiver le mode protégé, autoriser le site au niveau des cookie (logique quand même puisque IE8 n'envoit pas la commande et les options sont juste la récupération) :twisted:
En plus sur un autre (sous XP), ca fonctionne parfaitement avec Explorer 6.0, Firefox et Google Chrome.

Qu'est ce que Microsoft a encore imaginé pour me pourir la vie !!!!! Je pouvait bien m'amuser à vérifier les php.ini du serveur.
 
WRInaute accro
C'est effectivement un bug d'IE8 (et probablement IE9) en cherchant setcookie IE8, d'autres ont le même problème. La solution est finalement simple. Le cookie est crée dans un répertoire et bien créé puisque si on utilise la commande $valeur=setcookie($nom,$contenu), la valeur renvoyée est bien true. Par contre lorsque je récupère le cookie, j'utilise une fonction inclue dans un fichier en sous répertoire et .... Explorer 8.0 va chercher le cookie pour ce sous répertoire ... qu'il trouve pas. En déplacant le fichier reprenant la fonction de récupération dans le même répertoire que celui qui le crée, ca fonctionne.

Microsoft fait jamais rien standard.
 
WRInaute accro
Merçi des précisions. C'est intéressant à savoir...

Par contre, je suppose que tu n'es pas le seul. Comment est-donc géré par les autres?
 
WRInaute accro
C'est pas un problème de décalage de date comme expliqué ici ?
-http://superuser.com/a/102624
Dans les exemples que tu montres, tu mets juste 60 secondes.
Et je ne comprend pas cette histoire de chemin, étant donné que tu as laissé paramètre $path de setcookie par défaut (/).
 
WRInaute accro
spout a dit:
C'est pas un problème de décalage de date comme expliqué ici ?
-http://superuser.com/a/102624
Dans les exemples que tu montres, tu mets juste 60 secondes.
Et je ne comprend pas cette histoire de chemin, étant donné que tu as laissé paramètre $path de setcookie par défaut (/).
Non, c'est pas un problème de date :wink: (avec 3600, c'est identique), fait une simple recherche https://www.google.be/search?q=setcookie+IE8&ie=utf-8&oe=utf-8&aq=t&rl ... =firefox-a. Vers les 5, 6 ème positions de résultat, tu commence à trouver que d'autres ont le même problème. C'est la manière de gérer les cookies d'ie8. En appelant la fonction dans un fichier dans le même répertoire que celui du fichier qui envoit, ca fonctionne en local et sur l'hébergement (un américain avait l'inverse sur l'hébergement OK et en local rien comme quoi la gestion des cookies en IE8 est plus que mer*dique.

J'ai aussi essayé le path et même le nom de domaine dans la fonction, j'avais les mêmes problèmes.
Apparament, dans l'url que tu donne, il y a d'autres problèmes mais:
We have a similar problem with one of our sites. On two PCs that we've found running IE8, certain cookies seem to be "dropped" by IE8 at random times.
et les autres réponses sont quasiment identiques.
 
Discussions similaires
Haut