hébergé chez 1and1, j'ai un problème avec les cookies que je n'arrive pas à planter
Après 3 jours de galère , tél chez 1and1, email.....avec un script de login
j'ai fait un petit script d'essai qui fonctionne en local et sur un site ami
impossible chez 1and1
//Test ecrit dans un tableau les cookies existant print_r($_COOKIE); // test pour voir si les cookies existent
?>
et surprise en supprimant les echo'<br />'; le script fonctionne
question d'où peut venir ce problème et comment puisse-je faire pour y remédier.
car bien entendu dans mes scripts j'utilise des <br> avant de planter des cookies.
setcookie envoie des information dans le header HTTP, et tes "<br>" forcent l'envoi des données, donc du header, ce qui fait que tu ne peux pas mettre d'autres informations de header après avoir envoyé du texte (même un simple "\r\b")
Bonjour et merci pour ta réponse
c'est ce que je pensais au départ, c'est pourquoi que j'ai mis en php avec des échos, mais ils sont interprétés comme du html
mais pourquoi le même script fonctionne sur mon serveur local et sur cg-aisne.org/cookie.php et pas sur 1and1 ????
y-a-t-il pas une config de php.init à faire
mais comment planter des cookies en plein milieu d'un script ,aprés avoir fait des traitements sur la bdd
NHenry a raison. Mais l'hébergement peut aussi modifier ce comportement via le protocole HTTP utilisé et configuré dans Apache :
- si GZIP (ce qui est conseillé) => le serveur va "retenir" tout le buffer pour l'envoyer à la fin au client (le navigateur) => ton code fonctionne.
- si envoi au fil de l'eau (depuis HTTP 1.1 je crois) => effectivement le serveur va envoyer (flusher) les paquets au fur et à mesure de tes <?php echo ... ?> et donc le setcookie ne fonctionnera pas.
Si tu peux, le mieux est effectivement dans ton code de séparer la logique (base de données, cookies, ...) de la présentation : tu fais toute la logique en 1er sans rien écrire (pas de echo ni rien), puis ensuite tu génères la présentation (donc le code HTML, les <BR>, ...)
la différence de config entre 1and1 et les deux autres serveurs ou çà fonctionne est session.cookie_httponly
ou chez 1and1 la valeur est "" alors que pour les deux autres serveurs la valeur et off
1and1 me dit que je peux mettre un fichier php.ini pour forcer le serveur mais je ne trouve pas le code à mettre dans le fichier
ce qui m'énerve c'est que mon script de login fonctionne dans les autres serveurs sauf 1and1
si tu as le code du php.ini je suis preneur, ca me servira pour tous les autres scripts que je dois migrer sans avoir à tout réécrire
comme je n'ai pas accès au php.ini sur le serveur,
j'ai mis en place un php.ini dans le répertoire de travail
avec dedans ta fonction
ini_set('session.cookie_httponly', 1);
Malheureusement c'est pareil dés que l'on veut afficher qque chose, même pour une variable.
je vais voir pour envoyer les variables de traitement en POST sur une autre page pour planter uniquement les cookies
je vais continuer à chercher le pourquoi du comment
mais c'est rageant , alors que tout fonctionne sur les autres serveurs et ne pas savoir pourquoi par rapport à 1and1
Et le MEME code marche bien chez toi ? ah bin ca doit être une différence de configuration autre que session.cookie_httponly ... pourtant c'est toi qui as dit que c'était ca la différence ?
En tous cas je ne vois pas ... il faudrait regarder la configuration du server 1&1 ou leur poser la question ^^
oui c'est pour cela que çà m'énerve non seulement il fonctionne en local mais aussi sur un autre serveur extérieur ou est hébergé une association dont je m'occupe.
si c'était possible et si ne n'abuse pas, si tu pouvais essayer le script sur ton serveur, çà m'intéresserait d'avoir la réponse
1and 1 me répond on est hébergeur on ne fait pas de scripting
un bon mot pour botter en touche
en tout je te remercie de ta disponibilité
bonne journée