Erreur php a l'aide !!!!! :-(

Résolu
Bonjour,
j'obtiens cette erreur php que veut elle dire ?

Warning: Cannot modify header information - headers already sent by (output started at /mnt/140/sdb/b/7/farsi21/login.php:1) in /mnt/140/sdb/b/7/farsi21/login.php on line 19

voici le code de la ligne 15 a 20:

     
      if ($data[0] == 1) { 
      
     $_SESSION['login'] = $_POST['login']; 
     header('Location: membre.php'); 
         exit(); 
Configuration: Windows XP
Firefox 3.1

17 réponses

  1. Salut, regarde bien ton script au début tu as fait appelle à une condition "if" puis entre parenthèse tu as défini la condition pour exécuter se que tu as mis entre crochet, tu l'as bien ouverte au début mais tu a oubliée de la refermé à la fin ;)
    1. if ($data[0] == 1) {

      $_SESSION['login'] = $_POST['login'];
      header('Location: membre.php');
      exit();
      }

      je voit pas d'érreur
      1. quand je met session_start(); j'obtiens sa:

        Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/140/sdb/b/7/farsi21/login.php:1) in /mnt/140/sdb/b/7/farsi21/login.php on line 2

        Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/140/sdb/b/7/farsi21/login.php:1) in /mnt/140/sdb/b/7/farsi21/login.php on line 2

        Warning: Cannot modify header information - headers already sent by (output started at /mnt/140/sdb/b/7/farsi21/login.php:1) in /mnt/140/sdb/b/7/farsi21/login.php on line 19
        1. Contributeur
          ok!
          mais si tu veux utiliser les sessions,eh ben session_start() est obligatoire.vérifie qu'il y a pas d'espace avant session_start au début de ton script!
          1. ouai mais pares j'ai sa comme erreur:

            Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/140/sdb/b/7/farsi21/login.php:1) in /mnt/140/sdb/b/7/farsi21/login.php on line 2

            Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/140/sdb/b/7/farsi21/login.php:1) in /mnt/140/sdb/b/7/farsi21/login.php on line 2

            Warning: Cannot modify header information - headers already sent by (output started at /mnt/140/sdb/b/7/farsi21/login.php:1) in /mnt/140/sdb/b/7/farsi21/login.php on line 19
            1. <?php
              session_start();
              if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
              if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
              $base = mysql_connect ('sql.free.fr', 'farsi21', 'XXXXXX');
              mysql_select_db ('farsi21', $base);

              $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.md5(mysql_escape_string($_POST['pass'])).'"';
              $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
              $data = mysql_fetch_array($req);

              mysql_free_result($req);
              mysql_close();

              if ($data[0] == 1) {

              $_SESSION['login'] = $_POST['login'];
              header('Location: membre.php');
              exit();
              }

              elseif ($data[0] == 0) {
              $erreur = 'Compte non reconnu.';
              }

              else {
              $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
              }
              }
              else {
              $erreur = 'Au moins un des champs est vide.';
              }
              }
              ?>
              <html>
              <head>
              <title>Accueil</title>
              </head>
              <body>
              Connexion à l'espace membre :<br />
              <form action="index.php" method="post">
              Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
              Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
              <input type="submit" name="connexion" value="Connexion">
              </form>
              <a href="inscription.php">Vous inscrire</a>
              <?php
              if (isset($erreur)) echo '<br /><br />',$erreur;
              ?>
              </body>
              </html>

              il est disponible ici:http://www.lephpfacile.com/howto/10-comment-faire-un-espace-membre-en-php
              1. Contributeur
                re
                apparement tout est normal:
                <?php
                session_start();
                if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
                if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
                $base = mysql_connect ('sql.free.fr', 'farsi21', 'XXXXXX');
                mysql_select_db('farsi21', $base);
                
                $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.md5(mysql_escape_string($_POST['pass'])).'"';
                $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
                $data = mysql_fetch_array($req);
                
                mysql_free_result($req);
                mysql_close();
                
                if ($data[0] == 1) {
                
                $_SESSION['login'] = $_POST['login'];
                header('Location: membre.php');
                exit();
                }
                
                elseif ($data[0] == 0) {
                $erreur = 'Compte non reconnu.';
                }
                
                else {
                $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
                }
                }
                else {
                $erreur = 'Au moins un des champs est vide.';
                }
                }
                ?>
                <html>
                <head>
                <title>Accueil</title>
                </head>
                <body>
                Connexion à l'espace membre :<br />
                <form action="index.php" method="post">
                Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
                Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
                <input type="submit" name="connexion" value="Connexion">
                </form>
                <a href="inscription.php">Vous inscrire</a>
                <?php
                if (isset($erreur)) echo '<br /><br />',$erreur;
                ?>
                </body>
                </html>
                

                essai de vider le cache de ton navigateur,cookies et tout le reste et tu vas tester!J'ai le même script et chez moi il marche très bien!
                1. Bonsoir,
                  Apparemment, on ne peut pas utiliser un session_start avec un header : http://www.commentcamarche.net/faq/sujet 1916 php headers already sent by
                  1. Contributeur
                    bon une autre alternative!
                    <?php
                    
                    	
                    // Redirection
                    function redirection($url){ 
                    	if(headers_sent()){ 
                    		print('<meta http-equiv="refresh" content="0;URL='.$url.'">'); 
                    	}else{ 
                            header("Location: $url"); 
                    	} 
                    }
                    
                    
                    
                    ?>
                    

                    tu le met dans un autre fichier .php et dans ta page de login dtu fais un include.

                    Et à la place de header pour la redirection tu fais:
                    redirection("ton_url");  //tout simplement