Cookies hebergement 1and1

Signaler
Messages postés
38
Date d'inscription
dimanche 8 août 2010
Statut
Membre
Dernière intervention
13 janvier 2019
-
Messages postés
38
Date d'inscription
dimanche 8 août 2010
Statut
Membre
Dernière intervention
13 janvier 2019
-
Bonjour,

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

<?php
$viecookie=365*24*3600;
//echo $viecookie;
echo"<br />";
//***************** 1ere version *******************************************************
$claude="claude";
//setcookie("prenom",$claude,time()+$viecookie);
echo"<br />";

//***************** 2eme version *******************************************************
$prenom_statut="claude";
$nom_statut="tretre";
//setcookie("prenom_statut", $prenom_statut, (time() + $viecookie));
//setcookie("nom_statut", $nom_statut, (time() + $viecookie));

//*****************3 eme version *******************************************************
setcookie("GratosLogin[prenom_statut]", $prenom_statut, (time() + $viecookie));
setcookie("GratosLogin[nom_statut]", $nom_statut, (time() + $viecookie));

//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.

merci de votre aide

10 réponses

Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
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")
Messages postés
38
Date d'inscription
dimanche 8 août 2010
Statut
Membre
Dernière intervention
13 janvier 2019

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

merci à+
Claude
Messages postés
1041
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 avril 2020

Bonjour,

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>, ...)

A dispo
Messages postés
38
Date d'inscription
dimanche 8 août 2010
Statut
Membre
Dernière intervention
13 janvier 2019

Bonjour et merci pour ta réponse

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

merci d'avance, Bonne soirée
Messages postés
1041
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 avril 2020

Hello

Il faut ajouter cette ligne dans php.ini :
session.cookie_httponly = 1

Si tu n'y as pas accès, tu peux aussi le faire en PHP dans ta page, le plus haut possible bien sûr :
ini_set('session.cookie_httponly', 1); 


A+++
Messages postés
38
Date d'inscription
dimanche 8 août 2010
Statut
Membre
Dernière intervention
13 janvier 2019

Bonjour dam

merci pour la réponse, c'est sympa

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

bonne journée et merci encore de tes réponses
Messages postés
1041
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 avril 2020

Non non :)

si tu n'as pas accès à php.ini, alors mets juste cette ligne :
ini_set('session.cookie_httponly', 1);

en haut de tes pages PHP/HTML

par exemple :

<?php
ini_set('session.cookie_httponly', 1);
?>
<html>
ta page ici ...
</html>


Tu ne peux pas "inventer" un php.ini à n'importe quel endroit, il doit être dans la configuration d'Apache (généralement /etc/apache2/...)

Par ailleurs, tu avais mis la syntaxe php dans un .ini, ce qui de toutes manières n'aurait pas fonctionné.

A+++
Messages postés
38
Date d'inscription
dimanche 8 août 2010
Statut
Membre
Dernière intervention
13 janvier 2019

j'ai fait les deux mais c'est pareil , dés que je mets
echo $viecookie;

les deux cookie ne sont pas plantés



<?php
ini_set('session.cookie_httponly', 1);

$viecookie=365*24*3600;
echo $viecookie;

$prenom_statut="claude";
$nom_statut="treunet";

setcookie("GratosLogin[prenom_statut]", $prenom_statut, (time() + $viecookie));
setcookie("GratosLogin[nom_statut]", $nom_statut, (time() + $viecookie));
echo '<br />';
print_r($_COOKIE);
?>
Messages postés
1041
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 avril 2020

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 ^^

Bon courage
Messages postés
38
Date d'inscription
dimanche 8 août 2010
Statut
Membre
Dernière intervention
13 janvier 2019

bonjour dam

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