Page 1 sur 1

help cookies :-(

Posté : 15 sept. 2008, 18:13
par cedouf
bonjour a tous,

voila j'ai honte :(
je bloque sur un petit probleme .....

je veux faire un cookie qui installe un valeur donnée par l'url appelé
exemple : www.site.com/index.php?parrain=test
voila l'insertion de mon cookie :

Code : Tout sélectionner

@setcookie('parrain', $_GET['parrain'], (time()+60*60*24*100000));
je veux une valeur par défaut si aucun cookie

Code : Tout sélectionner

if (empty($_GET['parrain'])) $parrain = 'defaut'; else $parrain = $_COOKIE['parrain'];
sinon la valeur parrain de l'url passe ...

et la sur ce code je bloque....

merci d'avance a tous pour votre aide ....

Posté : 15 sept. 2008, 19:21
par chrislabricole
fait une condition pour savoir si $_GET['parrain'] existe, si oui, tu envoi le cookie, si non, tu envoi rien... puis après tu test si le cookie existe, si oui, tu mets ça valeur, si non, bah tu mets rien :)

ça donne un truc comme ça :
if( isset($_GET['parrain']) && !empty($_GET['parrain']) ){
setcookie('parrain', htmlentities($_GET['parrain']), (time()+60*60*24*100000)); // pas de @ avant la fonction sinon tu vois pas ton erreur, puis un htmlentities pour protéger...
}
et puis après :
if( isset($_COOKIE['parrain']) ){
$parrain = $_COOKIE['parrain'];
} else {
$parrain = 'defaut';
}
Ça devrait marcher :)

Posté : 16 sept. 2008, 17:41
par cedouf
coucou, merci pour ton aide, mais ca fonctionne toujours pas .....

lorsque j'appelle l'url : site.com/index.php?parrain=test
le echo de la valeur affiche : $parrain
je suis chez ovh et si je ne met pas @
il affiche systématiquement une erreur sur l'appel setcookie :
Warning: Cannot modify header information - headers already sent by (output started at /home.10.23/livres/index.php:1) in /home.10.23/livres/index.php on line 4

Posté : 16 sept. 2008, 18:41
par chrislabricole
Ah ok !
C'est tous simplement parce-que la fonction header() ne peut pas être faite après qu'il y a un caractère avant la balise <?php....

Regarde ça ;)

Posté : 16 sept. 2008, 19:10
par cedouf
voila le tout début de mon index.php
je comprend puuuuuu
snif :?

<? 
if( isset($parrain) && !empty($parrain) )
{ 
setcookie('parrain', $parrain, (time()+60*60*24*100000)); 
// pas de @ avant la fonction sinon tu vois pas ton erreur, puis un htmlentities pour protéger... 
}
//$parrain="defaut";
?>
<? include("tete.php"); ?>
erreur : Warning: Cannot modify header information - headers already sent by (output started at /home.10.23/livres/index.php:1) in /home.10.23/livres/index.php on line 4

Posté : 16 sept. 2008, 22:45
par chrislabricole
Il y a quelque temps, il m'est arrivé la même chose, si t'es sur qu'il n'y ai pas de caractère quelconque (code, espace, tabulation, etc...) alors, ça vient de la signature BOM

Avec quel éditeur tu créer tes pages ?
Sinon en cas, dans ton éditeur, tu fais "F1", puis tu tapes "BOM" tu devrai avoir la solution pour désactiver cette signature... ;)