[RESOLU] Rendre au moins une checkbox obligatoire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Rendre au moins une checkbox obligatoire

Re: Rendre au moins une checkbox obligatoire

par miguel33 » 09 déc. 2021, 10:37

J'ai trouvé comment faire
if(isset($_POST['formsend']))
    if(!empty($jeu_car)){
        echo "Votre mot de passe est : " ;
        for($i = 1; $i <= $Nombre; $i++) {
            echo $jeu_car[array_rand($jeu_car,1)];
        }
    }
    else
        echo "Veuillez cocher au moins une case ! " ;
J'utilise !empty

Re: Rendre au moins une checkbox obligatoire

par miguel33 » 09 déc. 2021, 10:22

if(!empty($_POST['formsend'])) // SI FORMULAIRE ENVOYE
{
    if (empty($_POST['minuscules'])) // SI AUCUNE CASE COCHE
    {
        if (empty($_POST['majuscules'])) 
            {
            if (empty($_POST['caractere_speciaux'])) 
                {
                 if (empty($_POST['chiffre'])) 
                    {
                        echo 'Veuillez cocher au moins une activité';
                        }
                    }
                }
            }
        }
    else
        echo "Votre mot de passe est : " ;
        for($i = 1; $i <= $Nombre; $i++) {
            echo $jeu_car[array_rand($jeu_car,1)];
        }
j'ai ça mais maintenant le problème est que j'ai ce message d'erreur :
Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in D:\...generateur.php on line 76

Notice: Undefined index: in D:\...generateur.php on line 76
et cet erreur ce repete autant de fois que la valeur $nombre

Re: Rendre au moins une checkbox obligatoire

par miguel33 » 09 déc. 2021, 09:15

Une boucle non, simplement une condition "si les trois sont vides" => tu ne valide pas

Avec if(empty($_POST['checkbox1']) && empty($_POST['checkbox2'] && etc)) { alors non} { sinon oui }
Comment je peux faire pour le alors non ne valide pas le formulaire ? De le faire revenir au début?

Re: Rendre au moins une checkbox obligatoire

par two3d » 03 déc. 2021, 16:22

Une boucle non, simplement une condition "si les trois sont vides" => tu ne valide pas

Avec if(empty($_POST['checkbox1']) && empty($_POST['checkbox2'] && etc)) { alors non} { sinon oui }

Re: Rendre au moins une checkbox obligatoire

par miguel33 » 03 déc. 2021, 15:38

java != javascript
Oui, par contre PHP c'est un traitement serveur, pas client, donc obligé de recharger la page (de cliquer sur le bouton et de voir les résultats).

Pour vérifier si un checkbox est coché en PHP tu peux soit faire comme tu as fait: isset() puis voir si le contenu du checkbox == "on" (c'est quand il est "coché")
Sans utiliser du javascript alors!
En effet je souhaite utilise que du Php, j'avais pensé a utilisé une bouche if aucune case est coché renvoyé le formulaire un truc du style mais est ce faisable?
et comment s'y prendre j'ai eu du mal a utilisé le ISSET déjà

Re: Rendre au moins une checkbox obligatoire

par two3d » 03 déc. 2021, 14:28

java != javascript
Oui, par contre PHP c'est un traitement serveur, pas client, donc obligé de recharger la page (de cliquer sur le bouton et de voir les résultats).

Pour vérifier si un checkbox est coché en PHP tu peux soit faire comme tu as fait: isset() puis voir si le contenu du checkbox == "on" (c'est quand il est "coché")

Re: Rendre au moins une checkbox obligatoire

par miguel33 » 03 déc. 2021, 13:50

J'aimerais le réalisé sans utilisé du java si possible est ce possible avec une boucle php?

Re: Rendre au moins une checkbox obligatoire

par two3d » 03 déc. 2021, 00:55

Au passage, les label s'utilise avec une correspondance (l'attribut id dans l'input, textarea,...) ton label ne sert actuellement à rien ;)

Je suppose que tu souhaite que le formulaire ne soit pas envoyé si aucune case est cochée, te faudra passer par du javascript.

Le preventDefault() t'aidera dans ta recherche.

Re: Rendre au moins une checkbox obligatoire

par @rthur » 02 déc. 2021, 12:54

Quel est le problème ?
Qu'as-tu essayé et qui ne marche pas ?

Rendre au moins une checkbox obligatoire

par miguel33 » 02 déc. 2021, 11:50

Bonjour, j'ai un code qui permet de générer un mot de passe mais j'aimerais que si l'utilisateur ne coche aucune case il ne puissent pas valider/générer son mdp
le code:
<html>
<head>
    <meta charset="utf-8" />
    <title>Générateur MDP</title>
    <link rel="stylesheet" type="text/css" href="css/projet.css">

</head>

<body>  
    <!--Menu de navigation -->
<?php include 'menunavigation.php'; ?>

<form method="post">
    <p>
    <label>Nombre de caractère</label> : <input type="number" name="Nombre" placeholder="Entrez un nombre" required/>
    </p>
    <p>
            Cochez les caractère que vous voulez dans votre mot de passe :<br />
            
            <input type="checkbox" name="minuscules" /> <label for="minuscules">minuscules</label> <br />
            <input type="checkbox" name="majuscules" /> <label for="majuscules">majuscules</label> <br />
            <input type="checkbox" name="caractere_speciaux" /> <label for="caractère spéciaux">caractère spéciaux</label><br />
            <input type="checkbox" name="chiffre" /> <label for="chiffre">chiffre</label>
        </p>
     

    <br>

    <input type="submit" name="formsend" id="formsend" value="Générer votre mot de passe">
    <br>
    
</form>


<?php
$min = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
$majuscules = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
$caractere_speciaux = array('²','&','é','#','(','-','è','_','ç','à',')','=','+','°','@','^','[','~','*','$','¤','^','ù','%','!',';',',','.','/',':','§');
$chiffre = array('1','2','3','4','5','6','7','8','9','0');
$jeu_car = array();
if(isset($_POST['minuscules'])){
    $jeu_car = array_merge($jeu_car, $min);
}
if(isset($_POST['majuscules'])){
    $jeu_car = array_merge($jeu_car, $majuscules);
}
if(isset($_POST['caractere_speciaux'])){
    $jeu_car = array_merge($jeu_car, $caractere_speciaux);
}
if(isset($_POST['chiffre'])){
    $jeu_car = array_merge($jeu_car, $chiffre);
}

$Nombre = isset($_POST["Nombre"]) ? $_POST['Nombre'] : NULL;

if(isset($_POST['formsend']))
    echo "Votre mot de passe est : " ;
    for($i = 1; $i <= $Nombre; $i++) {
        echo $jeu_car[array_rand($jeu_car,1)];
}
?>
</body>    

</html>