Pb header ???

bonjour,

je suis en train de faire un site
et j utilise des headers
quand Je travaillais sous windows tout marchait bien, maintenant sous linux lorsque le serveur rencontre un header ca me met comme erreur:

Warning: Cannot modify header information - headers already sent by (output started at /home/HTML/baptiste/librairie/lib_mysql.php3:3) in /home/HTML/baptiste/connexion.php3 on line 11

avez vous une idée ???

PS: la version de php est > à la 4.3

merci

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Elle ressemble à quoi cette ligne 11 ? (et ce qui l'entoure éventuellement ... )

    .::: "A trop vouloir feindre de faire fi, on finit 
    par faire fi de vouloir feindre." 
    :::.
    1. Salut,
      l'erreur vient du fait que tu dois envoyer tous tes headers AVANT de faire tes sorties html. Alors traite tous les headers avant d'envoyer la balise <html>, et ca devrait rouler!

      Fat_Cartman,
      Parce que je le vaux bien...
      1. le pb c est que sa marche sous windows .........

        voici mes lignes de codes tels quelles et sans commentaire rajouté apres le copier coller:

        <?
        // fonction mysql_connect et mysql_query
        include('./librairie/lib_mysql.php3');
        // parametre de connexion
        include('./librairie/lib_data.php3');
        // verifie les parametres saisies
        if (empty($_POST["login"])){
        header('Location: index.php3');
        }
        if (empty($_POST["password"])){
        header('Location: index.php3');
        }
        $login=$_POST["login"];
        $mdp=$_POST["password"];
        $connexion=connexion($host,$user,$pwd);

        // recherche si le client existe et si il est autorisé a avoir acces au site
        $requete='select * from client where login=\''.$login.'\' and mdp=\''.crypt($mdp,CRYPT_MD5 ).'\' and droit!=0;';
        $reponse=query($dbase,$requete,$connexion);
        $data=mysql_fetch_row($reponse);
        mysql_close($connexion);

        if ($data[0]==''){
        // le client n'existe pas
        header('Location: index.php3');
        }
        else{
        // le client existe
        // construction d'un identifiant unique ( format: [fonction du client]+[jour de la date du jour]+[longueur de id_client]+[id_client]+[identifiant]
        $unique=uniqid('',TRUE);
        $unique=$data[8].date("d").strlen($data[0]).$data[0].$unique;
        if (!$handle = fopen('connexion.txt', 'a')) {
        header('Location: index.php3');
        }
        if (fwrite($handle,$unique."\r\n") === FALSE) {
        header('Location: index.php3');
        }
        fclose($handle);
        if ($data[8]==1){
        // si le client est root
        header('Location: admin/index.php3?log='.$unique);
        }
        if ($data[8]==2){
        // si le client est modo
        header('Location: modo/index.php3?log='.$unique);
        }
        if ($data[8]==3){
        // si le client est client
        header('Location: index.php3?log='.$unique);
        }
        }
        ?>

        BON COURAGE et encore merci de votre aide
        1. Qu'est-ce que tu veux dire par "ça marche sous Windows" ?
          Tu veux dire que ça marche avec un serveur IIS et pas avec Apache ?

          Et est-ce que comme le dit fat_cartman tu es bien en dehors de balises html ?

          .::: "A trop vouloir feindre de faire fi, on finit 
          par faire fi de vouloir feindre." 
          :::.
          1. ca marche comme ca:

            un internaute rempli un formaulaire sur la page précédente,
            ce formulaire est envoyé sur la page connexion ( voir ci dessus ). Donc logiquement je suis sur une nouvelle page et je suis en dehors des balises html puisque y en a pas.

            la page connexion marche comme ca:
            -je fais des import de fonctions
            -je teste si le login et le password sont vides ou pas
            ( si vide je redirige vers l'accueil )
            - ensuite je regarde si l'utilisateur existe et a le droit d'acces au site.
            - si le résultat de cette requete est vide , je redirige ver l'acccueil
            - sinon je redirige sur les pages en fonctions de leur 'fonction' ( root , modo ,client )

            sous windows , j'utilise easyphp ( apache, php et mysql )
            sous linux , apache php et mysql

            je reste a votre disposition pour résoudre ce probleme.

            merci d'avance
          2. Eh ben regarde si t'as pas fait d'erreurs comme j'en ai deja faites:
            enlève tous les espaces et les sauts de lignes inutiles avant <? et apres ?>, car ces caracteres sont envoyés au navigateur et constituent le corps du fichier html.
            Vérifie dans ton fichier principal mais aussi dans les fichiers inclus.

            Fat_Cartman,
            Parce que je le vaux bien...
          3. MERCI.

            apperement c était un espace dans une de mes librairies, c a l air de marché mais j ai pas encore fait trop de tests.

            encore merci.