Partage
  • Partager sur Facebook
  • Partager sur Twitter

Validation d'un compte

    12 février 2006 à 11:48:24

    Bonjour,

    J'aurais besoin de votre aide pour la validation d'un compte !

    Je vous explique, quand un membre s'inscrit sur mon Script de Membre, il a comme Grade la valeur: 3
    3 signifiant que le compte n'a pas été validé, donc on envoie un email (qui marche bien) et on clique sur un lien pour valider son compte, le problème c'est que cela ne marche pas :'(

    Voici mon code qui UPDATE le grade du membre (pour que son compte soit activé !)

    if(!empty($_GET['valid']) && !empty($_GET['pseudo']))
    {
    $validation = htmlentities($_GET['valid']);
    $pseudo_valid = htmlentities($_POST['pseudo']);

    $selection_pseudo = mysql_query("SELECT COUNT(*) FROM membres WHERE pseudo='" .$pseudo_valid. "'") or die (mysql_error());
    $select_pseudo = mysql_fetch_array($selection_pseudo);

    if($select_pseudo['COUNT(*)'] > 0) //Le pseudo a été trouvé
    {
    $selection_pseudo_2 = mysql_query("SELECT pseudo,id,grade FROM membres WHERE pseudo='" .$pseudo_valid. "'") or die (mysql_error());
    $select_pseudo_2 = mysql_fetch_array($selection_pseudo_2);

    if($select_pseudo_2['grade'] == 3)
    {
    $pseudo_de_la_validation = md5($select_pseudo_2['pseudo']);
    if($pseudo_de_la_validation == $validation)
    {
     mysql_query("UPDATE membres SET grade='4' WHERE pseudo='" .$select_pseudo_2['pseudo']. "'") or die (mysql_error());
     
    echo'<meta http-equiv="refresh" content="3;URL=index.htm">';

    echo'<table ' .$taille_des_tableaux. '>
    <tr>
    <td align="center"><p>Votre compte a bien été validé !<br /><br />Nous vous redirigeons vers l\'index du site</p>
    <p>(<em><a href="index.htm">Ne pas attendre</a></em>)</p></td></tr></table>'
    ;
    exit;
     }
    }
    if($select_pseudo_2['grade'] <> 3)
    {
     echo'<meta http-equiv="refresh" content="3;URL=index.htm">';

    echo'<table ' .$taille_des_tableaux. '>
    <tr>
    <td align="center"><p>Le compte a déja été activé !<br /><br />Nous vous redirigeons vers l\'index du site</p>
    <p>(<em><a href="index.htm">Ne pas attendre</a></em>)</p></td></tr></table>'
    ;
    exit;
    }
    if($select_pseudo['COUNT(*)'] < 0) //Le pseudo a été trouvé
    {
    echo'<meta http-equiv="refresh" content="3;URL=index.htm">';

    echo'<table ' .$taille_des_tableaux. '>
    <tr>
    <td align="center"><p>Le pseudo n\'a pas été trouvé !<br /><br />Nous vous redirigeons vers l\'index du site</p>
    <p>(<em><a href="index.htm">Ne pas attendre</a></em>)</p></td></tr></table>'
    ;
      }
     }
    }


    Voila et par exemple quand j'ai un lien comme ceci:
    inscriptions.php?valid=f1ac04f415d3b2488558471511d078f8&pseudo=Administrateur


    Et bin il me met une page blanche.
    J'ai placé des echo un peu partout, et je me suis rednu compte que sa bloquait a cette ligne:
    if($select_pseudo['COUNT(*)'] > 0) //Le pseudo a été trouvé
    {


    J'ai mis un echo juste avant, il s'affichait, et j'en ai mit un juste derrière et il ne s'affichait pas !

    Pouvez vous m'aider a trouver l'erreur svp ?

    A+ :)
    • Partager sur Facebook
    • Partager sur Twitter
      12 février 2006 à 12:01:29

      C'est normal, ce n'est pas comme ça que marche les requête pour compter le nombre d'entré, je te conseillerais:
      <?php
      if(!empty($_GET['valid']) && !empty($_GET['pseudo']))
      {
              $validation = htmlentities($_GET['valid']);
              $pseudo_valid = htmlentities($_POST['pseudo']);
             
              $selection_pseudo = mysql_query ('
                                                                                SELECT COUNT(id)
                                                                                AS count
                                                                                FROM membres
                                                                                WHERE pseudo = "'
      . $pseudo_valid .'"
                                                                              '
      ) or die (mysql_error() );
              $select_pseudo = mysql_fetch_assoc($selection_pseudo);
             
              if($select_pseudo['count'] > 0) //Le pseudo a été trouvé
              {
                      $selection_pseudo_2 = mysql_query       ('
                                                                                                SELECT pseudo, id, grade
                                                                                                FROM membres
                                                                                                WHERE pseudo = "'
      . $pseudo_valid .'"
                                                                                              '
      ) or die (mysql_error() );
                      $select_pseudo_2 = mysql_fetch_assoc($selection_pseudo_2);
                     
                      if($select_pseudo_2['grade'] == 3)
                      {
                              $pseudo_de_la_validation = md5($select_pseudo_2['pseudo']);
                             
                              if($pseudo_de_la_validation == $validation)
                              {
                                      mysql_query     ('
                                                                UPDATE membres
                                                                SET grade= 4
                                                                WHERE pseudo = "'
      . $select_pseudo_2['pseudo'] .'"
                                                              '
      ) or die (mysql_error() );
                                       
                                      echo'<meta http-equiv="refresh" content="3;URL=index.htm">';
                                     
                                      echo'<table ' .$taille_des_tableaux. '>
                                      <tr>
                                      <td align="center"><p>Votre compte a bien été validé !<br /><br />Nous vous redirigeons vers l\'index du site</p>
                                      <p>(<em><a href="index.htm">Ne pas attendre</a></em>)</p></td></tr></table>'
      ;
                                      exit;
                              }
                      }
                      elseif($select_pseudo_2['grade'] != 3) //Je ne connais pas cet opérateur c'est quoi? si ça signifie plus grand ou plus petit j'ai mis !=
                      {
                              echo'<meta http-equiv="refresh" content="3;URL=index.htm">';
                             
                              echo'<table ' .$taille_des_tableaux. '>
                              <tr>
                              <td align="center"><p>Le compte a déja été activé !<br /><br />Nous vous redirigeons vers l\'index du site</p>
                              <p>(<em><a href="index.htm">Ne pas attendre</a></em>)</p></td></tr></table>'
      ;
                              exit;
                      }
              }
              else
              {
                      echo'<meta http-equiv="refresh" content="3;URL=index.htm">';
                     
                      echo'<table ' .$taille_des_tableaux. '>
                      <tr>
                      <td align="center"><p>Le pseudo n\'a pas été trouvé !<br /><br />Nous vous redirigeons vers l\'index du site</p>
                      <p>(<em><a href="index.htm">Ne pas attendre</a></em>)</p></td></tr></table>'
      ;
              }
      }
      ?>


      Au revoir.

      [EDIT] J'ai oublié de te dire aussi, lorsque tu créer ton lien de validation et que tu insère le pseudo dans le lien fait un petit url_encode dessus et quand tu le récupère avec les variablse $_GET fait un url_decode, car les caractère spéciaux tel que les accents, €, @ etc... pose parfois des problèmes lorsqu'ils sont passés en url sans être encodé.
      • Partager sur Facebook
      • Partager sur Twitter
        12 février 2006 à 12:45:45

        Salut,

        J'ai changer mon code comme tu me l'a dit, mais il me met que le pseudo a pas été trouvé !

        D'ou vient l'erreur svp ?

        A+
        • Partager sur Facebook
        • Partager sur Twitter
          12 février 2006 à 13:44:36

          Désolé j'avais pas vu que tu avais répondus, alors moi ce que je te conseillerais c'est d'oublier le pseudo et de le remplacer par l'id du membre, comme ça plus de problèmes de carctère spéciaux etc... sa simplifie le tout, donc utilise plutôt les id c'est plus propre plus sûr et plus discret, une fois que tu la fait dit moi si ça marche ou non, si non quel est le problème.
          • Partager sur Facebook
          • Partager sur Twitter

          Validation d'un compte

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown