Cookie header erreur free

Résolu
Bonjour,

j'ai bien fais attention à ne pas mettre de HTML pour pouvoir mettre tous les headers avant mais j'ai toujours le même problème chez free :

voici l'erreur qu'on retrouve toujours... :

Warning: Cannot modify header information - headers already sent by (output started at /mnt/142/sda/5/0/clan.tkt/connection.php:1) in /mnt/142/sda/5/0/clan.tkt/session_nb_co.php on line 63

Et voici comment je m'y suis p ris pour mon site :

--------------------------------------------------------index------------------------------------------------------------
<?php
include ('session_nb_co.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
....
----------------------------------------------------------------------------------------------------------------------------

et dans session_nb_co.php il n'y a aucun signe de html : c'est au niveau du setcookie que j'ai une erreur :/ (enfin deux mais pour la même raison)

-------------------------------------------------------------script du session_nb_co.php --------------------------------

<?php // 3 parties : creer / ouvrir / login / fermer regarder cookie/s'occuper session/nombre de connectes
session_start();
include ('connection.php');
$temps_unan=time()+365*24*3600;

// il faut D'ABORD DECO SI BESOIN ! donc en first déco & supp cookie
If(isset($_GET['deco']) and $_GET['deco']==1)
{
$_SESSION['connect']=0;
$_SESSION['menu']=0;
session_destroy();
session_start();
$_SESSION['pseudo']='inconnu(e)';
$_SESSION['mdp_login']='inconnu';
$pseudo=$_SESSION['pseudo'];
$mdp_login=$_SESSION['mdp_login'];
setcookie('$pseudo',$pseudo,0);
setcookie('$mdp_login',$mdp_login,0);
/* echo '<script language="Javascript">
<!--
document.location.replace("index.php");
// -->
</script>';
*/

}

// variable qui n'existe pas
// creer la session
If (!empty($_SESSION['connect']))
{
//SESSION EXISTE PAS : cookie existe on ouvre la session + Maj du cookie
If ((isset($_COOKIE['pseudo']))and (isset($_COOKIE['mdp_login'])) ) ///connect
{
//If ($_SESSION['pseudo']!='inconnu(e)') {
$_SESSION['pseudo']=$_COOKIE['pseudo'];
$_SESSION['mdp_login']=$_COOKIE['mdp_login'];
$_SESSION['connect']=1;
$pseudo=$_SESSION['pseudo'];
$mdp_login=$_SESSION['mdp_login'];
setcookie('$pseudo',$pseudo,$temps_unan);
setcookie('$mdp_login',$mdp_login,$temps_unan);

}
//cookie existe pas, on ouvre la session en inconnu + Ajout ? cookie
Else
{
$_SESSION['pseudo']='inconnu(e)';
$_SESSION['mdp_login']='inconnu';
$pseudo=$_SESSION['pseudo'];
$mdp_login=$_SESSION['mdp_login'];
setcookie('$pseudo',$pseudo,$temps_unan); ///////////////////////////////// ERREUR ICI
setcookie('$mdp_login',$mdp_login,$temps_unan);///////////////////////////////// ERREUR ICI
$_SESSION['connect']=0;
}
}
Else
{ // SESSION EXISTE : mets à jour le cookie + : prévoir nombre de co / dernière fois co / visiteur?
$pseudo=$_SESSION['pseudo'];
$mdp_login=$_SESSION['mdp_login'];
setcookie('$pseudo',$pseudo,$temps_unan);
setcookie('$mdp_login',$mdp_login,$temps_unan);

$_SESSION['connect']=1;

If ($_SESSION['pseudo']!='inconnu(e)')
{//donc c'est un membre donc faut METS A JOUR TIMESTAMP
$time=time();
mysql_query("UPDATE membres SET last_seen='$time' WHERE pseudo='$pseudo'")or die (mysql_error());

}
Else
{
$_SESSION['connect']=0;
}

}
// Lors du login :) on écrit pas le cookie on se log et le script le fait ailleur
If ((isset($_POST['pseudo']))and (isset($_POST['mdp_login'])))
{
If ((($_POST['pseudo'])!=NULL)and (($_POST['mdp_login'])!=NULL))
{
//on verifie ici que le pseudo fait parti d'un membre et on le met dans la session.
$resultat_membres=mysql_query("SELECT * FROM membres")or die (mysql_error());
while($donnees_membres=mysql_fetch_array($resultat_membres))
{
If (($donnees_membres['pseudo']==$_POST['pseudo'])and ($donnees_membres['mdp_inscription']==$_POST['mdp_login']))
{
$_SESSION['pseudo']=$_POST['pseudo'];
$_SESSION['mdp_login']=$_POST['mdp_login'];

echo '<script language="Javascript">
<!--
document.location.replace("index.php");
// -->
</script>';
}
}
}
}

?>

-----------------------------------------------------------------------------------------------------------------------

Voilà, avec WAMPSERVER, je n'ai aucun problème...et en ligne j'ai ces problèmes. Auriez vous une idée ? j'avais pas envie de tout mettre dans "index" car ça fait long mais si faut le faire... je le ferai :s

ps :

include ('connection.php'); <<< j'ai juste mis l'adresse de free, le login et le mot de passe. Pas de html dedant bien sur.

Merci d'avance
Configuration: Windows XP
Firefox 3.5.2

6 réponses

  1. Quand je regarde le source de la page générée, il y a deux caractères de tabulation avant le message d'erreur, tu peux le vérifier toi-même. Tu es sûr qu'il n'y a vraiment rien avant le <?php ??? Ou à la rigueur après le ?>, mais d'après le numéro de ligne c'est au début
    1. Contributeur
      On dirait bien que monsieur a un BOM en debut de page, mais je n' ai pas regardé le code....

      regarde en quoi est encodé ta page
      1. Bonjour

        D'après le message, les sorties ont commencé commencent dès la ligne 1 de connection.php
        Peux-tu nous montrer ce fichier (en remplaçant le mot de passe par des *** bien sûr !)
        1. -------------------------connection.php-----------------
          <?php
          mysql_connect("sql.free.fr","clan.tkt","***");
          //mysql_connect("localhost","root","");
          mysql_select_db("clan_tkt");
          ?>
          -----------------------------------------------------------

          voilà :x
          1. Exact, ces 2 tabulations faisaient planter.

            Je ne comprends pas pourquoi vu qu'elles sont censé être dans le php mais je suis content que ça aille mieu!

            Merci !

            problème résolu :)
            1. Elles n'étaient pas dans le php, puis qu'elles étaient avant la balise... Le PHP ne commence qu'à la balise.