Bug code source dans l'enregistrement O forum

Bonjour,
Pour faire court , j'ai un petit bug dans mon script pour la mise en place d'un forum dans mon site web :p.

le bug est situé dans la partie enregistrement du forum, et plus precisement dans la partie reservée a l'image antibot , cette derniere , j'arrive a l'afficher coorectement , mais je n'arrive as a trouver le probleme dans le if( ).
Si quelqu'un veut bien m'aider je lui en serais reconnaissant .
merci :)

13 réponses

  • Votes
  • Date
  • Date décroissante
  1. Comment veux-tu qu'on t'aide avec ça ?
    Il faudrait au moins nous donner ton code.
    1. voici mon code ( il y'a peut etre des zones qui sont effacées pour eviter de divulger les infos sur mon site) :

      <?php
      //Cette fonction doit être appelée avant tout code html
      session_start();

      //On donne ensuite un titre à la page, puis on appelle notre fichier debut.php
      $titre = "Index du forum";
      include("includes/debut.php");
      ?>
      <?php
      //Maintenant, on se connecte à la base de données
      include("includes/identifiants.php");
      mysql_connect($adresse, $nom, $motdepasse);
      mysql_select_db($database);

      $pseudo_erreur1 = NULL;
      $pseudo_erreur2 = NULL;
      $mdp_erreur = NULL;
      $email_erreur1 = NULL;
      $email_erreur2 = NULL;
      $msn_erreur = NULL;
      $signature_erreur = NULL;
      $avatar_erreur = NULL;
      $avatar_erreur1 = NULL;
      $avatar_erreur2 = NULL;
      $avatar_erreur3 = NULL;
      $milieu_html = NULL;
      ?>
      <?php

      $i = 0;
      $temps = time();
      $signature = mysql_real_escape_string($_POST['signature']);
      $pseudo = mysql_real_escape_string($_POST['pseudo']);
      $email = mysql_real_escape_string($_POST['email']);
      $msn = mysql_real_escape_string($_POST['msn']);
      $website = mysql_real_escape_string($_POST['website']);
      $localisation = mysql_real_escape_string($_POST['localisation']);
      $pass = md5($_POST['password']);
      $confirm = md5($_POST['confirm']);
      $milieu_html = mysql_real_escape_string($_POST['verif_code']);

      $nombrepseudo = mysql_result(mysql_query('SELECT COUNT(*) FROM forum_membres WHERE membre_pseudo = "'.$pseudo.'"'), 0);
      if($nombrepseudo != 0)
      {
      $pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
      $i++;
      }
      if (strlen($pseudo) < 3 || strlen($pseudo) > 15)
      {
      $pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
      $i++;
      }

      if ($pass != $confirm || empty($confirm) || empty($pass))

      $mdp_erreur = "Votre mot de passe et votre confirmation sont differents, ou sont vides";
      $i++;

      ?>

      <?php //partie antibot
      if(Isset($_POST['verif_code']) AND !Empty($_POST['verif_code']))
      { // Le champ du code de confirmation a été remplis
      if($_POST['verif_code'] !== $_SESSION['aleat_nbr'])
      {
      $i++;
      $milieu_html = 'Votre code de confirmation n est pas bon ! Merci de réessayer.';
      }
      }
      ?>
      <?php

      $nombremail = mysql_result(mysql_query('SELECT COUNT(*) FROM forum_membres WHERE membre_email = "'.$email.'"'), 0);

      if ($nombremail != 0)
      {
      $email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
      $i++;
      }
      //verification de la forme
      if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
      {
      $email_erreur2 = "Votre adresse E-Mail n'a pas un format valide";
      $i++;
      }
      //Vérification de l'adresse MSN
      if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $msn) && !empty($msn))
      {
      $msn_erreur = "Votre adresse MSN n'a pas un format valide";
      $i++;
      }
      //Vérification de la signature
      if (strlen($signature) > 200)
      {
      $signature_erreur = "Votre signature est trop longue";
      $i++;
      }
      ?>
      <?php
      //Vérification de l'avatar :
      if (!empty($_FILES['avatar']['size']))
      {
      //On définit les variables :
      $maxsize = 10024; //Poid de l'image
      $maxwidth = 100; //Largeur de l'image
      $maxheight = 100; //Longueur de l'image
      $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); //Liste des extensions valides

      if ($_FILES['avatar']['error'] > 0)
      {
      $avatar_erreur = "Erreur lors du tranfsert de l'avatar : ";
      }
      if ($_FILES['avatar']['size'] > $maxsize)
      {
      $i++;
      $avatar_erreur1 = "Le fichier est trop gros : (<strong>".$_FILES['avatar']['size']." Octets</strong> contre <strong>".$maxsize." Octets</strong>)";
      }

      $image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
      if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
      {
      $i++;
      $avatar_erreur2 = "Image trop large ou trop longue : (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre <strong>".$maxwidth."x".$maxheight."</strong>)";
      }

      $extension_upload = strtolower(substr( strrchr($_FILES['avatar']['name'], '.') ,1));
      if (!in_array($extension_upload,$extensions_valides) )
      {
      $i++;
      $avatar_erreur3 = "Extension de l'avatar incorrecte";
      }
      }
      ?>
      <body>
      <div class="contenu1">
      <?php
      if ($i == 0) // Si i est vide, il n'y a pas d'erreur
      {

      echo'<h1>Inscription terminée</h1>';
      echo'<p>Bienvenue '.stripslashes(htmlspecialchars($_POST['pseudo'])).' vous êtes maintenant inscrit sur le forum</p>';
      echo'<p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d accueil</p>';

      if (isset($_FILES['avatar']['size']))
      {
      //On déplace l'avatar
      $avatar = time();
      $nomavatar = str_replace(' ','',$avatar).".".$extension_upload;
      $avatar = "./images/avatars/".str_replace(' ','',$avatar).".".$extension_upload;
      move_uploaded_file($_FILES['avatar']['tmp_name'],$avatar);
      }

      //On balance le tout dans notre table
      mysql_query('
      INSERT INTO forum_membres (membre_pseudo, membre_mdp, membre_email,
      membre_msn, membre_siteweb, membre_avatar,
      membre_signature, membre_localisation, membre_inscrit,
      membre_derniere_visite)
      VALUES ("'.$pseudo.'" , "'.$pass.'" , "'.$email.'" ,
      "'.$msn.'" , "'.$website.'" , "'.$nomavatar.'" ,
      "'.$signature.'" , "'.$localisation.'" , "'.$temps.'" ,
      "'.$temps.'" ) ') or die(mysql_error());

      //Et on définit les variables de sessions
      $_SESSION['pseudo'] = $pseudo;
      $_SESSION['id'] = mysql_insert_id();
      $_SESSION['level'] = 2;

      }
      else
      {
      echo'<h1>Inscription interrompue</h1>';
      echo'<p>Une ou plusieurs erreurs se sont produites pendant l\'incription</p>';
      echo'<p>'.$i.' erreur(s)</p>';
      echo'<p>'.$pseudo_erreur1.'</p>';
      echo'<p>'.$pseudo_erreur2.'</p>';
      echo'<p>'.$mdp_erreur.'</p>';
      echo'<p>'.$email_erreur1.'</p>';
      echo'<p>'.$email_erreur2.'</p>';
      echo'<p>'.$msn_erreur.'</p>';
      echo'<p>'.$signature_erreur.'</p>';
      echo'<p>'.$avatar_erreur.'</p>';
      echo'<p>'.$avatar_erreur1.'</p>';
      echo'<p>'.$avatar_erreur2.'</p>';
      echo'<p>'.$avatar_erreur3.'</p>';
      echo'<p>'.$milieu_html.'</p>';
      echo'<p>Cliquez <a href="./register.php">ici</a> pour recommencer</p>';
      }
      mysql_close();
      ?>
      </div>
      </body>
      1. Ca fait presque une semaine que je cherche le petit "hic" dans ce code, donc celui qui le trouvera ou qui essayera :p de le trouver , aura mon entière gratitude :D
        1. desolé avion, mais je suis noob , donc si quelqu'un veut bien me proposer une solution , merci
          1. Place ton code entre la balise "code" quand tu écris un message sur ce site.
            Une balise c'est comme ... strong, em, p, div, span, h1, h2, ...
            1. non mais c'est bon t'inquiete, je ne vais quand meme pas lui faire une injection sql :) , sinon tu pourrais pas me donner stp le bon code , merci
              1. bon aparement personne ne veut m'aider , alors , je laisse ce topic ouvert en attendant une reponse que je n'aurais peut etre jamais :'(
                1. Depuis le début je te demande de mettre ton code dans la balise "code" de CCM !
                  1. <?php
                    //Cette fonction doit être appelée avant tout code html
                    session_start();
                    
                    //On donne ensuite un titre à la page, puis on appelle notre fichier debut.php
                    $titre = "Index du forum";
                    include("includes/debut.php");
                    ?>
                    <?php
                    //Maintenant, on se connecte à la base de données
                    include("includes/identifiants.php");
                    mysql_connect($adresse, $nom, $motdepasse);
                    mysql_select_db($database);
                    
                    
                    $pseudo_erreur1 = NULL;
                    $pseudo_erreur2 = NULL;
                    $mdp_erreur = NULL;
                    $email_erreur1 = NULL;
                    $email_erreur2 = NULL;
                    $msn_erreur = NULL;
                    $signature_erreur = NULL;
                    $avatar_erreur = NULL;
                    $avatar_erreur1 = NULL;
                    $avatar_erreur2 = NULL;
                    $avatar_erreur3 = NULL;
                    $milieu_html = NULL;
                    ?>
                    <?php
                    
                    $i = 0;
                    $temps = time();
                    $signature = mysql_real_escape_string($_POST['signature']);
                    $pseudo = mysql_real_escape_string($_POST['pseudo']);
                    $email = mysql_real_escape_string($_POST['email']);
                    $msn = mysql_real_escape_string($_POST['msn']);
                    $website = mysql_real_escape_string($_POST['website']);
                    $localisation = mysql_real_escape_string($_POST['localisation']);
                    $pass = md5($_POST['password']);
                    $confirm = md5($_POST['confirm']);
                    $milieu_html = mysql_real_escape_string($_POST['verif_code']);
                    
                    
                    
                    
                    
                    $nombrepseudo = mysql_result(mysql_query('SELECT COUNT(*) FROM forum_membres WHERE membre_pseudo = "'.$pseudo.'"'), 0);
                    if($nombrepseudo != 0)
                    {
                    $pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
                    $i++;
                    }
                    if (strlen($pseudo) < 3 || strlen($pseudo) > 15)
                    {
                    $pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
                    $i++;
                    }
                    
                    if ($pass != $confirm || empty($confirm) || empty($pass))
                    
                    $mdp_erreur = "Votre mot de passe et votre confirmation sont differents, ou sont vides";
                    $i++;
                    
                    ?>
                    
                    <?php //partie antibot
                    if(Isset($_POST['verif_code']) AND !Empty($_POST['verif_code']))
                    { // Le champ du code de confirmation a été remplis
                    if($_POST['verif_code'] !== $_SESSION['aleat_nbr'])
                    {
                    $i++;
                    $milieu_html = 'Votre code de confirmation n est pas bon ! Merci de réessayer.';
                    }
                    }
                    ?>
                    <?php
                    
                    
                    
                    $nombremail = mysql_result(mysql_query('SELECT COUNT(*) FROM forum_membres WHERE membre_email = "'.$email.'"'), 0);
                    
                    if ($nombremail != 0)
                    {
                    $email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
                    $i++;
                    }
                    //verification de la forme
                    if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
                    {
                    $email_erreur2 = "Votre adresse E-Mail n'a pas un format valide";
                    $i++;
                    }
                    //Vérification de l'adresse MSN
                    if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $msn) && !empty($msn))
                    {
                    $msn_erreur = "Votre adresse MSN n'a pas un format valide";
                    $i++;
                    }
                    //Vérification de la signature
                    if (strlen($signature) > 200)
                    {
                    $signature_erreur = "Votre signature est trop longue";
                    $i++;
                    }
                    ?>
                    <?php
                    //Vérification de l'avatar :
                    if (!empty($_FILES['avatar']['size']))
                    {
                    //On définit les variables :
                    $maxsize = 10024; //Poid de l'image
                    $maxwidth = 100; //Largeur de l'image
                    $maxheight = 100; //Longueur de l'image
                    $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); //Liste des extensions valides
                    
                    if ($_FILES['avatar']['error'] > 0)
                    {
                    $avatar_erreur = "Erreur lors du tranfsert de l'avatar : ";
                    }
                    if ($_FILES['avatar']['size'] > $maxsize)
                    {
                    $i++;
                    $avatar_erreur1 = "Le fichier est trop gros : (<strong>".$_FILES['avatar']['size']." Octets</strong> contre <strong>".$maxsize." Octets</strong>)";
                    }
                    
                    $image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
                    if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
                    {
                    $i++;
                    $avatar_erreur2 = "Image trop large ou trop longue : (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre <strong>".$maxwidth."x".$maxheight."</strong>)";
                    }
                    
                    $extension_upload = strtolower(substr( strrchr($_FILES['avatar']['name'], '.') ,1));
                    if (!in_array($extension_upload,$extensions_valides) )
                    {
                    $i++;
                    $avatar_erreur3 = "Extension de l'avatar incorrecte";
                    }
                    }
                    ?>
                    <body>
                    <div class="contenu1">
                    <?php
                    if ($i == 0) // Si i est vide, il n'y a pas d'erreur
                    {
                    
                    echo'<h1>Inscription terminée</h1>';
                    echo'<p>Bienvenue '.stripslashes(htmlspecialchars($_POST['pseudo'])).' vous êtes maintenant inscrit sur le forum</p>';
                    echo'<p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d accueil</p>';
                    
                    if (isset($_FILES['avatar']['size']))
                    {
                    //On déplace l'avatar
                    $avatar = time();
                    $nomavatar = str_replace(' ','',$avatar).".".$extension_upload;
                    $avatar = "./images/avatars/".str_replace(' ','',$avatar).".".$extension_upload;
                    move_uploaded_file($_FILES['avatar']['tmp_name'],$avatar);
                    }
                    
                    
                    //On balance le tout dans notre table
                    mysql_query('
                    INSERT INTO forum_membres (membre_pseudo, membre_mdp, membre_email,
                    membre_msn, membre_siteweb, membre_avatar,
                    membre_signature, membre_localisation, membre_inscrit,
                    membre_derniere_visite)
                    VALUES ("'.$pseudo.'" , "'.$pass.'" , "'.$email.'" ,
                    "'.$msn.'" , "'.$website.'" , "'.$nomavatar.'" ,
                    "'.$signature.'" , "'.$localisation.'" , "'.$temps.'" ,
                    "'.$temps.'" ) ') or die(mysql_error());
                    
                    
                    //Et on définit les variables de sessions
                    $_SESSION['pseudo'] = $pseudo;
                    $_SESSION['id'] = mysql_insert_id();
                    $_SESSION['level'] = 2;
                    
                    }
                    else
                    {
                    echo'<h1>Inscription interrompue</h1>';
                    echo'<p>Une ou plusieurs erreurs se sont produites pendant l\'incription</p>';
                    echo'<p>'.$i.' erreur(s)</p>';
                    echo'<p>'.$pseudo_erreur1.'</p>';
                    echo'<p>'.$pseudo_erreur2.'</p>';
                    echo'<p>'.$mdp_erreur.'</p>';
                    echo'<p>'.$email_erreur1.'</p>';
                    echo'<p>'.$email_erreur2.'</p>';
                    echo'<p>'.$msn_erreur.'</p>';
                    echo'<p>'.$signature_erreur.'</p>';
                    echo'<p>'.$avatar_erreur.'</p>';
                    echo'<p>'.$avatar_erreur1.'</p>';
                    echo'<p>'.$avatar_erreur2.'</p>';
                    echo'<p>'.$avatar_erreur3.'</p>';
                    echo'<p>'.$milieu_html.'</p>';
                    echo'<p>Cliquez <a href="./register.php">ici</a> pour recommencer</p>';
                    }
                    mysql_close();
                    ?>
                    </div>
                    </body>
                    
                    1. Mais ça ne change rien, tu as fais un copier/coller du code sans l'indentation donc ton code est illisible.
                      1. Fais un copier/coller de ton code dans la balise "code" de CCM avec les indentations (tabulations).