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

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

      je voit pas d'érreur
      0
      1. Contributeur
        Salut!
        as tu mis session_start() au début?
        0
        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
          0
          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!
            0
            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
              0
              1. Contributeur
                fais moi voir tout le script login.php stp!
                0
                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
                  0
                  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!
                    0
                    1. a ouai peut etre les cookies
                      0
                      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
                        0
                        1. j'ai vu sa donc je vais essayé en javascript ^^
                          0
                          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
                            
                            0
                            1. sa remarche :-) je sias pas pourquoi !!
                              0
                              1. Contributeur
                                le problème est résolu?avec quel source?
                                0
                                1. ba je sais pas sa marche maintenant
                                  0