Erreur avec setcookie() et header()

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 août 2006, 11:04

Tu ne peux pas faire de header(location:) après un setcookie, dans la mesure ou tu envois des données au navigateur.

En revanche normalement, tu peux fair le contraire : demander la redirection et juste après définir le cookie. En effet, même avec un header() le reste du script continue d'être exécuté.

Essaye donc comme ceci :
header("location:" . $_SERVER["PHP_SELF"]); 
setcookie("passe6",$val["nivo"]); 
exit(); // evite de lire la suite du code

Toutefois, d'après les commentaires de php.net, ceci ne fonctionne pas sur un serveur IIS 5 où le header est immédiatement exécuté..

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 août 2006, 11:09

Si tu ne fait pas le setcookie(), est-ce que l'erreur est toujours là ?

Il est possible que le setcookie() envoi des entete HTTP, ce qui expliquerait que le header ne fonctionne pas :-k
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

11 août 2006, 11:54

ryle j'ai inversé comme tu me la dit, les erreurs sont les memes...
j'ai pas bien compris ce que tu ma dit avec la compatibilité de mon serveur ? je dois faire quelques chose ?

zeus si je l'enlève le set cookie je n'ai plus que la deuxieme erreurs, mais erreur quand meme...
j'ai du mal a saisir pourquoi ca ne fonvtionne pas !...

ViPHP
ViPHP | 2144 Messages

11 août 2006, 12:21

Il vaudrait mieux aussi supprimer les "@" dans ton code, car cela bloque l'affichage des messages d'erreurs, ce qui est rès déconseillé, car sans message d'erreurs il est quasi impossible de trouver d'où vienne des erreurs d'exécutions;

Pour ton problème de header, il y a un post complêt sur ce sujet dans la FAQ.
(ps: toujours jeter un coup d'oeil à la FAQ avant de poster une demande d'aide sur le forum :wink: :wink: )

Mammouth du PHP | 991 Messages

13 août 2006, 21:15

  setcookie("passe6",$val["nivo"]);
         
         Header("Location: ".$_SERVER["PHP_SELF"]);
rajout
$timestamp_expire = time() + 365*24*3600 // le temps ou le cookie est valide
setcookie("passe6",$val["nivo"],$timestamp_expire);
normalement ca marche