KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Vendredi 16 mai 2008 - 10:12:11

[php] rajouter une vérification dans mon code

Rechercher : dans
[php] rajouter une vérification dans mon code
par fabrice11901
 Fil de Discussions
Statut : Résolu
samedi 17 juin 2006 à 10:39:39
Bonjour
J'ai un script, qui vérifis si tous les champs du précédent formulaire ont bien étaient entrés et si oui on inscris le membre et on envois un mail si il l'a demandé, sinon on met un message d'erreur mais j'aimerai maintenant rajouter une vérification (voir si le pseudo du membre) n'existe pas dans la bdd mais je ne sais pas comment faire.
1° on vérifis si tous les champs sont remplis
2° on vérifis dans la bdd si le pseudo choisis n'existe déjà pas si il n'existe pas, on fais la requete d'insertion sinon on met un message d'erreur
merci de m'aider je ppense qu'il faut faire un if dans un if mais je ne suis jamais monté aussi haut dans les vérifications.
merci
voici mon code acutel :

<?

  if ( isset($_POST['pseudo'])) 
    $pseudo=$_POST['pseudo'];
  
  if ( isset($_POST['passe'])) 
    $passe=$_POST['passe'];
  
  if ( isset($_POST['adresse'])) 
    $adresse=$_POST['adresse'];
  

  if ($pseudo && $passe && $adresse) {
      echo '<html>
              <head>
              </head>
              <body>';
$dbc = @mysql_connect ("localhost", "zone_zone", "*****");

if(!mysql_errno($dbc)) {
  mysql_select_db("zone_bdd");
      
$requete1 = "insert into v2 values( '' , '".$pseudo."' , '".$passe."' , '".$adresse."')";
  
mysql_query($requete1);

      echo ' <html> Bravo, votre inscription est bien prise en compte. Si vous avez demandé une confirmation par e-mail celle-ci a été envoyé !
              </body>
              </html>  ';
  }
  else {
          echo '<html><head><META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://www.zone-mobile.net/form_inscription.php"></head>';
          echo '<body>Merci de remplir tous les champs</body>';
  }
}
mysql_close();

$mail=$_POST['mail'];
if ($mail == '1') {mail($adresse,
"Confirmation d'inscription au site zone-mobile.net",
"Bonjour et merci pour votre inscription\r\nVous avez demandé à recevoir par e-mail vos identifiants pour vous connecter au site zone-mobile.net\r\nVoici
vos informations :\r\nPseudo : ".$pseudo ."\r\nMot de passe : ". $passe."\r\n".
"Le webmaster vous souhaite une agréable visite sur zone-mobile.net !\r\nPs : Ce mail a été envoyé automatiquement suite à votre demande d'inscription sur zone-mobile.net. Merci de ne pas y répondre.", "From:inscription@zone-mobile.net\r\nReply-To:inscription@zone-mobile.net");
}
else {
    echo "<p></p>";
} 

?> <html><a href="http://www.zone-mobile.net/accueil.php">Retour à l'accueil</A></html>

C'est bizarre, on en apprend tous les jours même quand on ne s'informe pas !!!!
Configurati­on: carte mere asus k8n4e, processeur : sempron 3300+, disque dur 80go mémoire : 512...
Répondre à fabrice11901  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Thom@s, le samedi 17 juin 2006 à 11:03:29 Fil de Discussions
Salut !

Pour vérifier que le pseudo n'est pas déjà dans la base, il faut lancer une requête sur ce pseudo et vérifier que le nombre de résultats est égal à zéro.

Voilà donc le code modifié :
<html>
  <head>
  <META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://www.zone-mobile.net/form_inscription.php">
  </head>
  
  <body>
<?
  if ( isset($_POST['pseudo'])) 
    $pseudo=addslashes(stripslashes($_POST['pseudo']));
  
  if ( isset($_POST['passe'])) 
    $passe=addslashes(stripslashes($_POST['passe']));
  
  if ( isset($_POST['adresse'])) 
    $adresse=addslashes(stripslashes($_POST['adresse']));

// Les addslashes sont nécessaires pour la sécurité du script (pour éviter des "injections SQL")
  
  
  if ($pseudo && $passe && $adresse) {
      echo '<html>
              <head>
              </head>
              <body>';
      $dbc = @mysql_connect ("localhost", "zone_zone", "*****");
      
      if(!mysql_errno($dbc)) {
          mysql_select_db("zone_bdd");
          
          $requete2 = "SELECT id FROM v2 WHERE pseudo='".$pseudo."'"; // On recherche le pseudo dans la base
          /* Bien sûr, c'est à adapter (ça suppose que le champ "clé" de ta table s'appelle id, que ta table s'appelle v2 et que le champ qui contient les pseudos s'appelle pseudo) */
          $requete2_query = mysql_query($requete2);
          
          if (mysql_num_rows($requete2_query)<1) { // Si le pseudo n'existe pas
            $requete1 = "insert into v2 values( '' , '".$pseudo."' , '".$passe."' , '".$adresse."')";
            mysql_query($requete1);
            
            echo 'Bravo, votre inscription est bien prise en compte. Si vous avez demandé une confirmation par e-mail, celle-ci a été envoyée !';
          }
          else { // Si le pseudo existe déjà
            echo 'Vous êtes déjà inscrit.<br>
              Aussi, votre inscription n\'a pas été prise en compte une seconde fois.';
          }
          mysql_free_result($requete2_query);
      }
      else {
            'Merci de remplir tous les champs';
      }
}
mysql_close();

$mail=$_POST['mail'];
if ($mail == '1') {
  mail($adresse,
  "Confirmation d'inscription au site zone-mobile.net",
  "Bonjour et merci pour votre inscription\r\nVous avez demandé à recevoir par e-mail vos identifiants pour vous connecter au site zone-mobile.net\r\nVoici
  vos informations :\r\nPseudo : ".$pseudo ."\r\nMot de passe : ". $passe."\r\n".
  "Le webmaster vous souhaite une agréable visite sur zone-mobile.net !\r\nPs : Ce mail a été envoyé automatiquement suite à votre demande d'inscription sur zone-mobile.net. Merci de ne pas y répondre.", "From:inscription@zone-mobile.net\r\nReply-To:inscription@zone-mobile.net");
}
else {
    echo "<p></p>";
} 

?> 
  <a href="http://www.zone-mobile.net/accueil.php">Retour à l'accueil</a>
  </body>
</html>

• Deux remarques :

1) J'ai mis les balises <html>, <body>, etc. en dur une fois pour toutes (en début et fin de page), pour ne pas les répéter dans chaque echo.

2) Pour la sécurité de ton script (pour éviter les "injections SQL"), j'ai ajouté addslashes et stripslashes. Ces deux fontions servent respectivement à ajouter et supprimer les antislashes devant les caractères tels que les guillemets (") ou les apostrophes (').
- On supprime d'abord les slashes s'ils ont été ajoutés automatiquement;
- On les ajoute ensuite. Comme ça, on est bien sûr qu'ils sont là ;-)

A+ :)
.:|  T h o m @ s  |:.
Répondre à Thom@s

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par fabrice11901, le samedi 17 juin 2006 à 11:28:24 Fil de Discussions
salut
merci
par contre y a un pb j'obtiens si je ne remplis aucun champs warning mysql_close() puis si le pseudo est déjà prix iil envois quand même le mail de confirmation !
merci
C'est bizarre, on en apprend tous les jours même quand on ne s'informe pas !!!!
Répondre à fabrice11901

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Thom@s, le samedi 17 juin 2006 à 12:43:48 Fil de Discussions
Re,

Ben oui, il faut adapter le code :-)

1) Il faut que mysql_conect() et mysql_close() soient ensemble: soit tous les deux dans le if (ce que j'ai fait), soit tous les deux hors du if.

2) Ben pour qu'il envoie le mail de confirmation seulement si le pseudo n'existe pas, il suffit de mettre le mail() dans le (mysql_num_rows($requete2_query)<1).

3) Les if/else étaient un peu confus; j'ai essayé de clarifier ça.

<html>
  <head>
  <META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://www.zone-mobile.net/form_inscription.php">
  </head>
  
  <body>
<?
  if ( isset($_POST['pseudo'])) 
    $pseudo=addslashes(stripslashes($_POST['pseudo']));
  
  if ( isset($_POST['passe'])) 
    $passe=addslashes(stripslashes($_POST['passe']));
  
  if ( isset($_POST['adresse'])) 
    $adresse=addslashes(stripslashes($_POST['adresse']));

// Les addslashes sont nécessaires pour la sécurité du script (pour éviter des "injections SQL")
  
  
  if ($pseudo && $passe && $adresse && !mysql_errno($dbc)) {
      echo '<html>
              <head>
              </head>
              <body>';
      $dbc = @mysql_connect ("localhost", "zone_zone", "*****");
      
      mysql_select_db("zone_bdd");
      
      $requete2 = "SELECT id FROM v2 WHERE pseudo='".$pseudo."'"; // On recherche le pseudo dans la base
      /* Bien sûr, c'est à adapter (ça suppose que le champ "clé" de ta table s'appelle id, que ta table s'appelle v2 et que le champ qui contient les pseudos s'appelle pseudo) */
      $requete2_query = mysql_query($requete2);
      
      if (mysql_num_rows($requete2_query)<1) { // Si le pseudo n'existe pas
        $requete1 = "insert into v2 values( '' , '".$pseudo."' , '".$passe."' , '".$adresse."')";
        mysql_query($requete1);
        
        echo 'Bravo, votre inscription est bien prise en compte. Si vous avez demandé une confirmation par e-mail, celle-ci a été envoyée !';
        
        $mail=$_POST['mail'];
        if ($mail == '1') {
          mail($adresse,
          "Confirmation d'inscription au site zone-mobile.net",
          "Bonjour et merci pour votre inscription\r\nVous avez demandé à recevoir par e-mail vos identifiants pour vous connecter au site zone-mobile.net\r\nVoici
          vos informations :\r\nPseudo : ".$pseudo ."\r\nMot de passe : ". $passe."\r\n".
          "Le webmaster vous souhaite une agréable visite sur zone-mobile.net !\r\nPs : Ce mail a été envoyé automatiquement suite à votre demande d'inscription sur zone-mobile.net. Merci de ne pas y répondre.", "From:inscription@zone-mobile.net\r\nReply-To:inscription@zone-mobile.net");
        }
      }
      else { // Si le pseudo existe déjà
        echo 'Vous êtes déjà inscrit.<br>
          Aussi, votre inscription n\'a pas été prise en compte une seconde fois.';
      }
      mysql_free_result($requete2_query);
      mysql_close();
}
else {
      'Merci de remplir tous les champs';
}

?> 
  <a href="http://www.zone-mobile.net/accueil.php">Retour à l'accueil</a>
  </body>
</html>

A+ :-)
.:|  T h o m @ s  |:.
Répondre à Thom@s

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par fabrice11901, le samedi 17 juin 2006 à 13:04:39 Fil de Discussions
re
en fait :
si un pseudo est déjà prit j'obtient :

Warning: mysql_errno(): supplied argument is not a valid MySQL-Link resource in /home/zone/domains/zone-mobile.net/public_html/inscription.php on line 19
Désolé, mais ce pseudo existe déjà.
Veuillez en choisir un autre. Retour à l'accueil.
Si je ne rentre aucun infos dans le formulaire je n'obtiens pas de message d'erreur alors que je devrait avoir : merci de remplir tous les champs" puis je suis r'envoyer vers la page d'inscription...
d'où vient le pb?
merci à toi t'es sympat
C'est bizarre, on en apprend tous les jours même quand on ne s'informe pas !!!!
Répondre à fabrice11901

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Thom@s, le samedi 17 juin 2006 à 13:10:45 Fil de Discussions
Re,

1) Il faut mettre mysql_connect() et mysql_close() en-dehors du if (sinon, mysql_errno ne marche pas).

2) Pour vérifier que les champs sont bien remplis, il ne suffit pas de vérifier que $_POST['LeChamp'] existe: isset($_POST['LeChamp']) .
Il faut vérifier que la variable n'est pas vide :

$LeChamp!=''
(ce sont deux apostrophes qui se suivent)

Ca donne donc :
<html>
  <head>
  <META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://www.zone-mobile.net/form_inscription.php">
  </head>
  
  <body>
<?
  if ( isset($_POST['pseudo'])) 
    $pseudo=addslashes(stripslashes($_POST['pseudo']));
  
  if ( isset($_POST['passe'])) 
    $passe=addslashes(stripslashes($_POST['passe']));
  
  if ( isset($_POST['adresse'])) 
    $adresse=addslashes(stripslashes($_POST['adresse']));

// Les addslashes sont nécessaires pour la sécurité du script (pour éviter des "injections SQL")
  
  $dbc = @mysql_connect ("localhost", "zone_zone", "*****");
  
  if ($pseudo!='' && $passe!='' && $adresse!='' && !mysql_errno($dbc)) {
      echo '<html>
              <head>
              </head>
              <body>';
                    
      mysql_select_db("zone_bdd");
      
      $requete2 = "SELECT id FROM v2 WHERE pseudo='".$pseudo."'"; // On recherche le pseudo dans la base
      /* Bien sûr, c'est à adapter (ça suppose que le champ "clé" de ta table s'appelle id, que ta table s'appelle v2 et que le champ qui contient les pseudos s'appelle pseudo) */
      $requete2_query = mysql_query($requete2);
      
      if (mysql_num_rows($requete2_query)<1) { // Si le pseudo n'existe pas
        $requete1 = "insert into v2 values( '' , '".$pseudo."' , '".$passe."' , '".$adresse."')";
        mysql_query($requete1);
        
        echo 'Bravo, votre inscription est bien prise en compte. Si vous avez demandé une confirmation par e-mail, celle-ci a été envoyée !';
        
        $mail=$_POST['mail'];
        if ($mail == '1') {
          mail($adresse,
          "Confirmation d'inscription au site zone-mobile.net",
          "Bonjour et merci pour votre inscription\r\nVous avez demandé à recevoir par e-mail vos identifiants pour vous connecter au site zone-mobile.net\r\nVoici
          vos informations :\r\nPseudo : ".$pseudo ."\r\nMot de passe : ". $passe."\r\n".
          "Le webmaster vous souhaite une agréable visite sur zone-mobile.net !\r\nPs : Ce mail a été envoyé automatiquement suite à votre demande d'inscription sur zone-mobile.net. Merci de ne pas y répondre.", "From:inscription@zone-mobile.net\r\nReply-To:inscription@zone-mobile.net");
        }
      }
      else { // Si le pseudo existe déjà
        echo 'Vous êtes déjà inscrit.<br>
          Aussi, votre inscription n\'a pas été prise en compte une seconde fois.';
      }
      mysql_free_result($requete2_query);
}
else {
      'Merci de remplir tous les champs';
}
mysql_close();

?> 
  <a href="http://www.zone-mobile.net/accueil.php">Retour à l'accueil</a>
  </body>
</html>

A+ :-)
.:|  T h o m @ s  |:.
Répondre à Thom@s

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par fabrice11901, le samedi 17 juin 2006 à 13:38:50 Fil de Discussions
déjà je n'obtiens pas le message d'erreur warning... mais si je ne remplis aucun champs, je n'ai pas le message d'erreur "merci de remplir tous les champs" si le pseudo est déjà utilisé ça met bien le bon message d'erreur.

Code php
<html>
  <head>
  <META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://www.zone-mobile.net/form_inscription.php">
  </head>

  <body>
<?
  if ( isset($_POST['pseudo']))
    $pseudo=addslashes(stripslashes($_POST['pseudo']));

  if ( isset($_POST['passe']))
    $passe=addslashes(stripslashes($_POST['passe']));

  if ( isset($_POST['adresse']))
    $adresse=addslashes(stripslashes($_POST['adresse']));

// Les addslashes sont nécessaires pour la sécurité du script (pour éviter des "injections SQL")

  $dbc = @mysql_connect ("localhost", "zone_zone", "*****");

  if ($pseudo!='' && $passe!='' && $adresse!='' && !mysql_errno($dbc)) {
      echo '<html>
              <head>
              </head>
              <body>';

      mysql_select_db("zone_bdd");

      $requete2 = "SELECT id FROM v2 WHERE pseudo='".$pseudo."'"; // On recherche le pseudo dans la base
      /* Bien s?r, c'est ? adapter (ça suppose que le champ "clé" de ta table s'appelle id, que ta table s'appelle v2 et que le champ qui contient les pseudos
s'appelle pseudo) */
      $requete2_query = mysql_query($requete2);

      if (mysql_num_rows($requete2_query)<1) { // Si le pseudo n'existe pas
        $requete1 = "insert into v2 values( '' , '".$pseudo."' , '".$passe."' , '".$adresse."')";
        mysql_query($requete1);

        echo 'Bravo, votre inscription est bien prise en compte. Si vous avez demandé une confirmation par e-mail, celle-ci a été envoyée !';

        $mail=$_POST['mail'];
        if ($mail == '1') {
          mail($adresse,
          "Confirmation d'inscription au site zone-mobile.net",
          "Bonjour et merci pour votre inscription\r\nVous avez demandé ? recevoir par e-mail vos identifiants pour vous connecter au site zone-mobile.net\r\nVoici
          vos informations :\r\nPseudo : ".$pseudo ."\r\nMot de passe : ". $passe."\r\n".
          "Le webmaster vous souhaite une agréable visite sur zone-mobile.net !\r\nPs : Ce mail a été envoyé automatiquement suite ? votre demande d'inscription
sur zone-mobile.net. Merci de ne pas y répondre.", "From:inscription@zone-mobile.net\r\nReply-To:inscription@zone-mobile.net");
        }
      }
      else { // Si le pseudo existe déj?
        echo 'Désolé, mais ce pseudo est déjà utilisé. Veuillez en choisir un autre.';
      }
      mysql_free_result($requete2_query);
}
else {
      'Merci de remplir tous les champs';
}
mysql_close();

?>
  <a href="
http://www.zone-mobile.net/accueil.php">Retour à
l'accueil</a>
  </body>
</html>


c'est vrai que je m'y pert dans ce code ! car je n'ai jamais utilisé de if dans un autre donc je me mélange...
merci
C'est bizarre, on en apprend tous les jours même quand on ne s'informe pas !!!!
Répondre à fabrice11901

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Thom@s, le samedi 17 juin 2006 à 13:56:52 Fil de Discussions
Re,

C'est une erreur d'inattention: il manque le echo (en bas, dans le else, devant 'Merci de remplir tous les champs';).
;-)

A+
.:|  T h o m @ s  |:.
Répondre à Thom@s

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par fabrice11901, le samedi 17 juin 2006 à 14:12:01 Fil de Discussions
salut
c'est bon ça marche !
merci bon va falloir que je me face à ces if (ce sont les {} qui me perturbent...)
A+ et encoremerci
C'est bizarre, on en apprend tous les jours même quand on ne s'informe pas !!!!
Répondre à fabrice11901

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Thom@s, le samedi 17 juin 2006 à 14:20:24 Fil de Discussions 
De rien ;-)

A+
.:|  T h o m @ s  |:.
Répondre à Thom@s
Discussions pertinentes trouvées dans le forum
02/02 07h27(PHP) Probléme de code pour livre d'orWebmastering03/02 09h204
03/12 18h51Verification code.Webmastering28/02 09h499
02/02 11h11Condition php gérant du code htmlWebmastering03/02 09h295
14/02 15h26Verification codes accès et adresse e-mailInternet28/04 14h015
Plus de discussions sur « [php] rajouter une vérification dans mon code » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide