Vérifier si la checkbox du cgu est coché ou pas

manandroid

manandroid Le 12 février 2017 à 17:18 (Édité le 25 janvier 2019 à 17:53)

Bonjour/Bonsoir à tous, Actuellement je réalise toujours mon formulaire d'inscription, J'aimerais savoir comment fait t-on pour signaler à l'utilisateur qu'il doit coché la case du cgu avant de s'inscrire.

Exemple : J'ai mon formulaire en ligne , un visiteur veut s’inscrire pseudo mdp etc et avant le bouton s'inscrire j'ai la checkbox du cgu mais il oublie de la coché comment l'indiquer qu'il à pas coché ? svp

Mon code : 

<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
if(isset($_POST['forminscription'])) {
   $pseudo = htmlspecialchars($_POST['pseudo']);
   $mail = htmlspecialchars($_POST['mail']);
   $mail2 = htmlspecialchars($_POST['mail2']);
   $mdp = sha1($_POST['mdp']);
   $mdp2 = sha1($_POST['mdp2']);
   $ip = $_SERVER['REMOTE_ADDR'];
   $nav = $_SERVER['HTTP_USER_AGENT'];
   if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) {
      $pseudolength = strlen($pseudo);
      if($pseudolength <= 255) {
         if($mail == $mail2) {
            if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {
               $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
               $reqmail->execute(array($mail));
               $mailexist = $reqmail->rowCount();
               if($mailexist == 0) {
                  if($mdp == $mdp2) {
                     $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse, ip, nav) VALUES(?, ?, ?, ?, ?)");
                     $insertmbr->execute(array($pseudo, $mail, $mdp, $ip, $nav));
                     $erreur = "Votre compte a bien été créé !";
                  } else {
                     $erreur = "Vos mots de passes ne correspondent pas !";
                  }
               } else {
                  $erreur = "Adresse mail déjà utilisée !";
               }
            } else {
               $erreur = "Votre adresse mail n'est pas valide !";
            }
         } else {
            $erreur = "Vos adresses mail ne correspondent pas !";
         }
      } else {
         $erreur = "Votre pseudo ne doit pas dépasser 255 caractères !";
      }
   } else {
      $erreur = "Tous les champs doivent être complétés !";
   }
}
?>
<html>
   <head>
      <title>Inscription</title>
      <meta charset="utf-8">
   </head>
   <body>
      <div align="center">
         <h2>Inscription</h2>
         <br /><br />
         <form method="POST" action="">
            <table>
               <tr>
                  <td align="right">
                     <label for="pseudo">Pseudo :</label>
                  </td>
                  <td>
                     <input type="text" placeholder="Votre pseudo" id="pseudo" name="pseudo" value="<?php if(isset($pseudo)) { echo $pseudo; } ?>" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mail">Mail :</label>
                  </td>
                  <td>
                     <input type="email" placeholder="Votre mail" id="mail" name="mail" value="<?php if(isset($mail)) { echo $mail; } ?>" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mail2">Confirmation du mail :</label>
                  </td>
                  <td>
                     <input type="email" placeholder="Confirmez votre mail" id="mail2" name="mail2" value="<?php if(isset($mail2)) { echo $mail2; } ?>" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mdp">Mot de passe :</label>
                  </td>
                  <td>
                     <input type="password" placeholder="Votre mot de passe" id="mdp" name="mdp" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mdp2">Confirmation du mot de passe :</label>
                  </td>
                  <td>
                     <input type="password" placeholder="Confirmez votre mdp" id="mdp2" name="mdp2" />
                  </td>
               </tr>
             <tr>
                  <td></td>
                  <td align="right">
                     <br />
                     <input type="checkbox" name="cgu_accept_ins" id="cgu"/><label for="cgu">J'accepte les <a href="#">Conditions Générales d'Utilisation</a></label>
                  </td>
               </tr>
               <tr>
                  <td></td>
                  <td align="center">
                     <br />
                     <input type="submit" name="forminscription" value="Je m'inscris" />
                  </td>
               </tr>
            </table>
         </form>
         <?php
         if(isset($erreur)) {
            echo '<font color="red">'.$erreur."</font>";
         }
         ?>
      </div>
   </body>
</html>
Johan-Krn

Johan-Krn Le 13 février 2017 à 00:01

Bonjour c'est très simple il te suffit de mettre ce bout de code
// tu met ce bout de code
if(empty($_POST['cgu']){
   $erreur = "Vous n'êtes pas d'accord avec les conditions de service";
}

// ici comme ça
if($mdp == $mdp2) {
   if(!empty($_POST['cgu']){
      $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse, ip, nav) VALUES(?, ?, ?, ?, ?)");
      $insertmbr->execute(array($pseudo, $mail, $mdp, $ip, $nav));
      $erreur = "Votre compte a bien été créé !";   
   }else{   
      $erreur = "Vous n'êtes pas d'accord avec les conditions de service";   
   }   
} else {
   $erreur = "Vos mots de passes ne correspondent pas !";
}

// ou tu vérifie si "cgu" n'est pas vide comme le "pseudo" etc
// je préfère la première solution car l'utilisateur reçoit le message d'erreur "Vous n'êtes pas d'accord avec les conditions de service" alors qu'avec la 2eme solution l'utilisateur reçoit le message d'erreur "Tous les champs doivent être complétés !"

if(!empty($_POST['cgu']) AND !empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) {
   ...
}
manandroid

manandroid Le 14 février 2017 à 05:04

@toutpac Merci pour le code mais il ya un probleme j'ai une erreur voir 1er image, je met le code aussi ci-dessous
[url=http://zupimages.net/viewer.php?id=17/07/a3lw.jpg]
[/url]
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
if(isset($_POST['forminscription'])) {
   $pseudo = htmlspecialchars($_POST['pseudo']);
   $mail = htmlspecialchars($_POST['mail']);
   $mail2 = htmlspecialchars($_POST['mail2']);
   $mdp = sha1($_POST['mdp']);
   $mdp2 = sha1($_POST['mdp2']);
   $ip = $_SERVER['REMOTE_ADDR'];
   $nav = $_SERVER['HTTP_USER_AGENT'];
   if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) {
      $pseudolength = strlen($pseudo);
      if($pseudolength <= 255) {
         if($mail == $mail2) {
            if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {
               $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
               $reqmail->execute(array($mail));
               $mailexist = $reqmail->rowCount();
               if($mailexist == 0) {
                  if($mdp == $mdp2) {
                 if(empty($_POST['cgu']) {
                     $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse, ip, nav) VALUES(?, ?, ?, ?, ?)");
                     $insertmbr->execute(array($pseudo, $mail, $mdp, $ip, $nav));
                     $erreur = "Votre compte a bien été créé !";
                   }else{   
                     $erreur = "Vous n'êtes pas d'accord avec les conditions de service"; 
                  }      
                  } else {
                     $erreur = "Vos mots de passes ne correspondent pas !";
                  }
               } else {
                  $erreur = "Adresse mail déjà utilisée !";
               }
            } else {
               $erreur = "Votre adresse mail n'est pas valide !";
            }
         } else {
            $erreur = "Vos adresses mail ne correspondent pas !";
         }
      } else {
         $erreur = "Votre pseudo ne doit pas dépasser 255 caractères !";
      }
   } else {
      $erreur = "Tous les champs doivent être complétés !";
   }
}
?>
Johan-Krn

Johan-Krn Le 14 février 2017 à 05:39

Bonjour oui je viens de voir j'ai oublier de fermer mon if.
Dernière précision pour la condition c'est différent de vide donc comme sa --> !empty sa ferra "si cgu est différent de vide alors j'insert mon utilisateur" parce que empty veut dire vide en gros sa aurais fait "si cgu est vide j'insert mon utilisateur"
if(!empty($_POST['cgu'])){
   $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse, ip, nav) VALUES(?, ?, ?, ?, ?)");
   $insertmbr->execute(array($pseudo, $mail, $mdp, $ip, $nav));
   $erreur = "Votre compte a bien été créé !";   
}else{   
   $erreur = "Vous n'êtes pas d'accord avec les conditions de service";   
}   
manandroid

manandroid Le 14 février 2017 à 18:41 (Édité le 14 février 2017 à 18:50)

Merci toutpac j'avais pas fait attention à la fermeture j'etait en train de chercher pdt 2h30 l'erreur avant de venir ici xD 

Oui j'ai vue sa il ya toujours un bug avec la variable sa bloque sur "Vous n'êtes pas d'accord avec les conditions de service" Coché ou pas

Donc je que je vais faire vue que je vien de trouvé sa c'est mettre un " required" dans le html et viré la partie php qui concerne le cgu

Code html où je met mon required, qui fonctionne quand même 😀

ps: Je laisse ouvert le topic pour de future réponse pour le moment et si après sa il y a rien je fermerais par la suite
             <tr>                  <td></td>
                  <td align="right">
                     <br />
                     <input type="checkbox" name="cgu_accept_ins" id="cgu" required />
                <label for="cgu"><FONT color="FFFAFA">J'accepte les <a href="#">Conditions Générales d'Utilisation</a></FONT></label>
                  </td>
               </tr>
               <tr>
Johan-Krn

Johan-Krn Le 14 février 2017 à 18:49

Re c'est toujours utile de faire une vérification en php car si l'utilisateur fait inspecter l’élément et qu'il supprime le "required" son compte sera crée et après il peut ce retourner contre ton site 
manandroid

manandroid Le 14 février 2017 à 18:52

Re , oui ta raison mais comme je disais dans ma modif de post il ya toujours un bug avec la variable sa bloque sur "Vous n'êtes pas d'accord avec les conditions de service" Coché ou pas 

C'est bizarre pourtant le code est bien réaliser :/ 
Zbuu

Zbuu Le 15 février 2017 à 10:53 (Édité le 15 février 2017 à 10:55)

Le code de @toutpac est correct mais as tu pensé a modifier ta condition ou fait un simple copier coller ? 

Dans ton html ton input cgu à l'attribut name : cgu_accept_ins

Donc tu dois modifier la condition que @toutpac ta donné : 
if(!empty($_POST['cgu'])){
par : 
if(!empty($_POST['cgu_accept_ins'])){
C'est bizarre pourtant le code est bien réaliser :/ 
Si tu n'a pas le résultat voulu ou une erreur c'est forcément qu'il y a une erreur dans ton code, PHP n'est pas magique ça ne fonctionne pas tout seul (c'est pareil pour tout les langages de programmation d'ailleurs) 😀
manandroid

manandroid Le 15 février 2017 à 15:54

Bonjour Zbuu , non c'est pas que C / C non mais juste que je débute le php donc c'est pas trop dans l'habitude de modifier sa fait juste 3 semaine que je travaille en php avant sa c'etait du simple html xD 😄, mais bien sur je copie pas un code bêtement un code si je comprend pas à quoi sa sert la varriable mais c'est plutot   [' '] que je ne suis pas encore habituer à coder.

Oui j'avais remarquer cette erreur ce matin même avant ton message, mais j'avais pas le temps d'aller sur le forum pour le dire , mais merci à toi & à @toutpc de m'avoir aidé
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte