[PHP] Gestion de cookies
Résolu/Fermé
Valarauco
Messages postés
16
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
3 juin 2009
-
20 mai 2009 à 21:44
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 22 mai 2009 à 20:20
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 22 mai 2009 à 20:20
A voir également:
- [PHP] Gestion de cookies
- Supprimer les cookies - Guide
- Easy php - Télécharger - Divers Web & Internet
- Logiciel gestion photo gratuit - Guide
- Logiciel gestion cave à vin gratuit excel - Télécharger - Cuisine & Gastronomie
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
13 réponses
Bonjour
Non, ça n'est pas $page_en = 'lang/interface_en.txt';... qui crée cette erreur.
Comme l'a dit IpIpIpIpOne, c'est que tu envoies quelque chose au client avant le setCookie.
Souvent il s'agit d'un caractère invisible qui est en tout début de fichier avant le <?php. Si écris tes scripts en UTF8, enregistre-les en UTF8 SANS BOM ou, si tu n'as pas vraiment besoin de l'UTF8, en ANSI.
Non, ça n'est pas $page_en = 'lang/interface_en.txt';... qui crée cette erreur.
Comme l'a dit IpIpIpIpOne, c'est que tu envoies quelque chose au client avant le setCookie.
Souvent il s'agit d'un caractère invisible qui est en tout début de fichier avant le <?php. Si écris tes scripts en UTF8, enregistre-les en UTF8 SANS BOM ou, si tu n'as pas vraiment besoin de l'UTF8, en ANSI.
Utilisateur anonyme
20 mai 2009 à 23:26
20 mai 2009 à 23:26
tu pourrais envoyer le code d'une de tes pages pour voir un peu stp ?
IpIpIpIpOne
Messages postés
436
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
24 mai 2009
116
20 mai 2009 à 23:48
20 mai 2009 à 23:48
Salut !
Cette erreur veut dire que tu affiches quelque chose (que tu envoies les header) avant d'apeller la fonction setCookie(). Pour résoudre ton problème, il te suffit donc de mettre ton setcookie avant toute sortie vers le navigateur.
Si tu veux, tu peux aussi mettre un ob_start() en tout début de ton code et un ob_end_flush() tout à la fin.
Cordialement,
IpIpIp Ipone
Cette erreur veut dire que tu affiches quelque chose (que tu envoies les header) avant d'apeller la fonction setCookie(). Pour résoudre ton problème, il te suffit donc de mettre ton setcookie avant toute sortie vers le navigateur.
Si tu veux, tu peux aussi mettre un ob_start() en tout début de ton code et un ob_end_flush() tout à la fin.
Cordialement,
IpIpIp Ipone
Valarauco
Messages postés
16
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
3 juin 2009
21
21 mai 2009 à 11:16
21 mai 2009 à 11:16
Merci pour les réponses, mais avant d'envoyer les cookies, je fais des tests pour savoir si il existe déjà ou si l'utilisateur à envoyé par la méthode post un changement de lang.
Voilà le code :
<?php
$expire = 365*24*3600;
if (!isset($_COOKIE['lang']) && !isset($_POST['lang']) ) {
$lang="fr";
setcookie("lang",$lang,time()+$expire);
}
if (!isset($_COOKIE['lang']) && isset($_POST['lang'])) {
$lang = $_POST['lang'];
setcookie("lang",$lang,time()+$expire);
}
if(isset($_COOKIE['lang']) && !isset($_POST['lang'])) {
$lang = $_COOKIE['lang'];
}
if (isset($_COOKIE['lang']) && isset($_POST['lang']) ) {
$lang=$_POST['lang'];
setcookie("lang",$lang,time()+$expire);
}
if ($lang=="en") {
include ($page_en);
include ('lang/interface_en.txt');
}
if ($lang=="fr") {
include ($page_fr);
include ('lang/interface_fr.txt');
}
?>
J'ai mis ce code dans une page appelé cookie.php, et dans mes pages principale, je fais cet appel en premier.
Voilà le code :
<?php
$expire = 365*24*3600;
if (!isset($_COOKIE['lang']) && !isset($_POST['lang']) ) {
$lang="fr";
setcookie("lang",$lang,time()+$expire);
}
if (!isset($_COOKIE['lang']) && isset($_POST['lang'])) {
$lang = $_POST['lang'];
setcookie("lang",$lang,time()+$expire);
}
if(isset($_COOKIE['lang']) && !isset($_POST['lang'])) {
$lang = $_COOKIE['lang'];
}
if (isset($_COOKIE['lang']) && isset($_POST['lang']) ) {
$lang=$_POST['lang'];
setcookie("lang",$lang,time()+$expire);
}
if ($lang=="en") {
include ($page_en);
include ('lang/interface_en.txt');
}
if ($lang=="fr") {
include ($page_fr);
include ('lang/interface_fr.txt');
}
?>
J'ai mis ce code dans une page appelé cookie.php, et dans mes pages principale, je fais cet appel en premier.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
IpIpIpIpOne
Messages postés
436
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
24 mai 2009
116
21 mai 2009 à 18:14
21 mai 2009 à 18:14
Tu peux faire tout ce que tu veux comme test avant, ça ne pose pas de problèmes.
Mais tu ne peux rien afficher avant, ni caractère, ni espace, ni saut de ligne ... Vu l'erreurrenvoyée, il doit sans aucun doute rester quelque chose chose avant ton setCookie. Enfin, je suppose ... sinon, je ne vois pas du tout d'où peut venir ton problème. Bonne recherche ! ;-)
cordialement,
IpIpIp Ipone
Mais tu ne peux rien afficher avant, ni caractère, ni espace, ni saut de ligne ... Vu l'erreurrenvoyée, il doit sans aucun doute rester quelque chose chose avant ton setCookie. Enfin, je suppose ... sinon, je ne vois pas du tout d'où peut venir ton problème. Bonne recherche ! ;-)
cordialement,
IpIpIp Ipone
Valarauco
Messages postés
16
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
3 juin 2009
21
22 mai 2009 à 09:05
22 mai 2009 à 09:05
Bonjour,
Merci pour la réponse. En fait, avant l'appel de la page j'ai stocké le chemin de fichiers .txt dans page_en et page_fr. Le début de mes pages font alors :
<?php
$page_en = 'lang/interface_en.txt';
$page_fr = 'lang/interface_fr.txt';
include ('connexion.php');
// suite du code
Je pensais que ça aurait pu m'éviter de copier à chaque fois l'algo dans toutes les pages. Mais si c'est cela qui crée l'erreur, soit je devrais créer une function fverif() qui retourne le langage choisit, soit recopier l'algo en début de chaque page.
Merci pour tes réponses IpIpIp Ipone
Merci pour la réponse. En fait, avant l'appel de la page j'ai stocké le chemin de fichiers .txt dans page_en et page_fr. Le début de mes pages font alors :
<?php
$page_en = 'lang/interface_en.txt';
$page_fr = 'lang/interface_fr.txt';
include ('connexion.php');
// suite du code
Je pensais que ça aurait pu m'éviter de copier à chaque fois l'algo dans toutes les pages. Mais si c'est cela qui crée l'erreur, soit je devrais créer une function fverif() qui retourne le langage choisit, soit recopier l'algo en début de chaque page.
Merci pour tes réponses IpIpIp Ipone
Valarauco
Messages postés
16
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
3 juin 2009
21
22 mai 2009 à 13:47
22 mai 2009 à 13:47
C'est vrai que cela peut être à cause d'un caractère invisible, quand je voulais tester mes sources sans la partie des cookies, le validateur html me disait qu'il y avait un problème avant le doctype.
Sinon j'enregistre bien en UTF-8.
Merci le père
Sinon j'enregistre bien en UTF-8.
Merci le père
Valarauco
Messages postés
16
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
3 juin 2009
21
22 mai 2009 à 14:45
22 mai 2009 à 14:45
Je travaille avec Notepad++ mais je ne vois pas ce que c'est SANS BOOM, je configure bien le UTF-8 dans format.
Je vérifirais ce soir chez moi, je n'ai pas mes sources sur moi.
Je vérifirais ce soir chez moi, je n'ai pas mes sources sur moi.
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
22 mai 2009 à 15:42
22 mai 2009 à 15:42
Parfois cette erreur viens aussi d'un simple espace en trop qu'il pourrai y avoir en tout début de fichier.
Valarauco
Messages postés
16
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
3 juin 2009
21
22 mai 2009 à 19:57
22 mai 2009 à 19:57
Alors j'ai mis le UTF-8 without BOM et ça marche.
Je vous remercie de votre aide
Je vous remercie de votre aide
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
22 mai 2009 à 20:20
22 mai 2009 à 20:20
Oublie pas de modifier le statu en haut de cette page en "résolu"