help cookies :-(

Petit nouveau ! | 3 Messages

15 sept. 2008, 18:13

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

Mammouth du PHP | 959 Messages

15 sept. 2008, 19:21

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 :)

Petit nouveau ! | 3 Messages

16 sept. 2008, 17:41

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

Mammouth du PHP | 959 Messages

16 sept. 2008, 18:41

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 ;)

Petit nouveau ! | 3 Messages

16 sept. 2008, 19:10

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

Mammouth du PHP | 959 Messages

16 sept. 2008, 22:45

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