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. 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
    
    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
        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. <?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. 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. 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. 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. if ($data[0] == 1) {

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

                  je voit pas d'érreur
                  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 ;)