Problème SetCookie en php (urgent)

Résolu
Bonjour, alors je dois rendre un site comme projet d'informatique à la fac pour mardi et je suis à la bourre, d'autant plus que j'ai un problème, que je présente de suite:
Voilà, j'ai un problème avec ce code, j'utilise EasyPhp et le message d'erreur est le suivant:

"Warning: Cannot modify header information - headers already sent by (output started at c:\weblocal\sites\site1\connexion\validationidentification.php:1) in c:\weblocal\sites\site1\connexion\validationidentification.php on line 18"

Et voilà le code:
<?php
$tab=file("inscrits.txt");
for($i=0;$i<count($tab);$i++){
$l=explode("/",$tab[$i]);
$pseudo[$i]=$l[0];
$mdp[$i]=$l[1];
$mail[$i]=$l[2];
}
$nbusers=count($tab);
$_SERVER['PHP_AUTH_USER']=$_POST['login'];
$_SERVER['PHP_AUTH_PW']=$_POST['mdp'];
$user=$_SERVER['PHP_AUTH_USER'];
$passw=$_SERVER['PHP_AUTH_PW'];
for($i=0;$i<count($tab);$i++){
if(($user==$pseudo[$i]) && ($passw==$mdp[$i])){
setcookie(
'login',
$user);
echo $pseudo[$i];
echo "<html><body>Identification réussie vous allez maintenant être redirigé !</body></html>";
}
else{
$user=-1;
echo "<html><body>Mot de passe ou login incorrect, pour réessayer, cliquez <a href=\"identification.html\">ici</a></body></html>";
}
}

?>
Configuration: Windows XP
Firefox 2.0.0.3

2 réponses

  1. merci sa venait du fait qu'il y avait un espace avant "<?php" c'est super sympa, j'étais dessus depuis un bon bout de temps, par contre c'était bien la ligne 18 qui correspondait en fait à la fermeture du cookie!
    Je t'en remercie encore une fois
    1. Salut,

      Le cookie doit etre envoyé avant TOUT code HTML.
      Or je pense qu'avant le début de ton code php qui commence par <?php il y a probablement des espaces ou des sauts de lignes ? Ces caractères sont envoyés immédiatement donc en arrivant à setcookie il ne peut plus le gérer.

      L'erreur est à la ligne 18 d'après le message et j'en compte 16 pour le setcookie, il y en a donc deux de trop au début que tu n'as pas recopié ?

      de plus il dit output started at line 1 c'est donc bien que des caractères de la ligne 1 sont envoyés.

      ec