Générateur mdp

Fermé
iamtheone Messages postés 39 Date d'inscription lundi 10 avril 2017 Statut Membre Dernière intervention 8 mai 2017 - 19 avril 2017 à 16:57
iamtheone Messages postés 39 Date d'inscription lundi 10 avril 2017 Statut Membre Dernière intervention 8 mai 2017 - 20 avril 2017 à 19:34
Bonjour,
Mon code qui permettrait de générer un mdp aléatoire ne fonctionne pas... :/ Je ne comprend pas. Je cherche une explication plutôt qu'une correction si possible (je veux comprendre)

Voici le code complet :
<!DOCTYPE html>
<html>
    <head>
        <title>Page Title</title>
        <script type="text/javascript">
        
var chain; var caracters; var caracter;
        
        function genere() {

document.form.result.value= "";
chain = "azertyuiopqsdfghjklmwxcvbn";

if (document.form.figures.checked) {
chain += "1234567890";
};
if (document.form.specials.checked) {
chain += "!@#$&?%";
};
if (document.form.upperCase.checked) {
chain += "AZERTYUIOPQSDFGHJKLMWXCVBN";
};

var caracters = eval(document.form.caracters.value);
for (i=0, i<caracters, i++) {
var caracter =  chain.charAt(Math.floor(Math.random() * chain.length));
document.form.result.value += "+caracter+";
};

//reset
chain = "azertyuiopqsdfghjklmwxcvbn";
document.form.figures.checked = false;
document.form.specials.checked = false;
document.form.upperCase.checked = false;

        };

</script>

    </head>
    <body>
    
<h2>Mdp Generator</h2>
    <p>Short description</p>
    <form name="form">
        Lenght : <input type="number" name="caracters" value="6"></input><br />
        <input type="checkbox" name="figures"></input>Active figures<br />
        <input type="checkbox" name="specials"></input>Active specials caracters<br />
        <input type="checkbox" name="upperCase"></input>Active upper cases<br />
        <input type="submit" name="genere" value="genere" onClick="genere()"></input><br /><br />
        <input type="text" name="result" placeholder="your future password"></input>
    </form>

    </body>
</html>


Merci.

1 réponse

jordane45 Messages postés 36897 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 février 2023 4 479
19 avril 2017 à 17:57
Encore une fois ......remplaces le type "submit" de ton bouton par ... "button"
 <input type="submit"


 <input type="button"


... le SUBMIT sert à envoyer les données en PHP ..... il rappel ta page SANS faire appel à tes fonctions javascript....

0
iamtheone Messages postés 39 Date d'inscription lundi 10 avril 2017 Statut Membre Dernière intervention 8 mai 2017
19 avril 2017 à 19:20
Ah merci je comprend du coup. Mais le programme ne marche toujours pas...
0
jordane45 Messages postés 36897 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 février 2023 4 479
19 avril 2017 à 20:03
Tu as d'autres erreurs ....
Si tu regardes dans la console de ton navigateur..il te les affiche !

Par exemple .. pour un for ... ce sont les point-virgules qu'il faut utiliser ... pas les virgules !
for (i=0, i<caracters, i++) {

Doit s'écrire :
for (var i=0; i<caracters; i++) {


Tu utilises aussi des quotes inutilement..
par exemple :
document.form.result.value += "+caracter+";

A la place .. il suffit de mettre :
document.form.result.value += caracter;


Bref .... voici le code corrigé
Je te laisse le regarder et comparer avec le tient pour comprendre tes erreurs....

<!DOCTYPE html>
<html>
  <head>
    <title>Page Title</title>
  </head>
  <body>
  
    <h2>Mdp Generator</h2>
    <p>Short description</p>
    <form name="form">
      Lenght : <input type="number" name="caracters" value="6"><br />
      <input type="checkbox" name="figures">Active figures<br />
      <input type="checkbox" name="specials">Active specials caracters<br />
      <input type="checkbox" name="upperCase">Active upper cases<br />
      <input type="button" name="genere" value="genere" onclick="generer();"><br /><br />
      <input type="text" name="result" placeholder="your future password">
    </form>
    <script type="text/javascript">
              
    function generer(){
      var chain; 
      var caracters; 
      var caracter;
      document.form.result.value= "";
      chain = "azertyuiopqsdfghjklmwxcvbn";

      if (document.form.figures.checked) {
        chain += "1234567890";
      }
      if (document.form.specials.checked) {
       chain += "!@#$&?%";
      }
      if (document.form.upperCase.checked) {
       chain += "AZERTYUIOPQSDFGHJKLMWXCVBN";
      }

      var caracters = eval(document.form.caracters.value);
      for (var i=0; i<caracters; i++) {
        var caracter =  chain.charAt(Math.floor(Math.random() * chain.length));
        document.form.result.value += caracter;
      }

      //reset
      chain = "azertyuiopqsdfghjklmwxcvbn";
      document.form.figures.checked = false;
      document.form.specials.checked = false;
      document.form.upperCase.checked = false;

     }
    </script>
  </body>
</html>


Faudrait aussi arrêter d'utiliser l'écriture : document.form.machintruc ... et utiliser à la place des ID pour tes éléments HTML et donc : document.getElementById('idmachintruc')
0
iamtheone Messages postés 39 Date d'inscription lundi 10 avril 2017 Statut Membre Dernière intervention 8 mai 2017 > jordane45 Messages postés 36897 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 février 2023
Modifié le 19 avril 2017 à 20:54
Vraiment merci beaucoup. Oui je vais regarder. Mais pourquoi utiliser les id plutôt que les chemins d'accès ? Et pourquoi tu met toujours le script à la fin du body ? Et dernière question : à quoi ça sert de déclarer les variables en debut de fonction ou hors fonction (j'ai enlevé pour essayer et ça fonctionne) ?
0
jordane45 Messages postés 36897 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 février 2023 4 479 > iamtheone Messages postés 39 Date d'inscription lundi 10 avril 2017 Statut Membre Dernière intervention 8 mai 2017
19 avril 2017 à 22:27
C'est au niveau de la portée des variables...
Les variables définies en dehors des fonctions sont "globales" (accessible dans toutes les fonctions).. alors que les variables définies DANS les fonctions ne sont accessibles qu'à celles ci.

Ensuite pourquoi mettre le JS à la fin du body .... pour qu'il ne soit actif qu'une fois que la page est totalement chargée... de plus cela permet d'afficher le HTML même si il y a des erreurs dans le JS

Pour ce qui est des ID .. et bien.. disons que c'est l'essence du javascript.
Pour "selectionner" les éléments on utilise les ID ... les class et en dernier recours les "name".
(les attributs name sont, par contre, les seuls utilisés en php )
0
iamtheone Messages postés 39 Date d'inscription lundi 10 avril 2017 Statut Membre Dernière intervention 8 mai 2017
20 avril 2017 à 18:55
Sinon on défini une variable sans le "var" dans une fonction et elle sera globale. Oui maintenant je met le script à la fin du body merci :)).
0