15/11/2024

Développement Web

PHP – Générateur de mot de passe paramétrable

I. Présentation

Trouver des mots de passe complexes pour ses utilisateurs n'est pas toujours simple mais c'est sans compter sur l'utilisation d'un script PHP qui peut nous en générer des complexes, rapidement et en grande quantité.

Nous allons donc voir comment créer ce script, que vous pourrez paramétrer selon ce que vous souhaitez obtenir en remplissant seulement un formulaire.

II. Que permet-il de paramétrer ?

  • Le nombre de caractères que le mot de passe doit contenir.
  • Le nombre de mot de passe à générer.
  • Le type de caractères que doit contenir le mot de passe.

III. Quel est le rôle de chaque page ?

Il y a une page qui contient uniquement le formulaire où l'utilisateur doit indiquer ce qu'il souhaite obtenir, cette page envoie ensuite les paramètres à une autre page qui génére les mots de passe. Le nom de cette première page est ParamPasswd.php.

La seconde page génére et affiche l'intégralité des mots de passe selon les paramètres reçus de la page ParamPasswd.php. Cette seconde page s'appelle ListPasswd.php.

IV. Le formulaire - Page ParamPasswd.php

Créez une nouvelle page, enregistrez la au format php avec le nom indiqué ci-dessus et insérez le formulaire suivant :

<form action='ListPasswd.php'>
Nombre de mot de passe a générer : <input type='text' Name='nbrPasswd' value='1'>
<br>
Taille du/des mot(s) de passe (Nombre de caractères) : <input type='text' Name='nbrCaract' value='5'>
<br>
Type de mot de passe :     <select name='typePasswd'>
<option value='1'>Chiffres uniquement</option>
<option value='2'>Lettres uniquement</option>
<option value='3'>Chiffres et lettres</option>
<option value='4'>Tout caractères</option>
</select>
<br>
<input type='submit' value='Générer'>
</form>

V. La génération et le listage des mots de passe - ListPasswd.php

Comme pour l'autre page, créez un nouveau document au format PHP puis donnez lui comme nom ListPasswd.php. Insérez le code suivant :

<?php
// Récupère les paramètres pour adapter selon les besoins de l'utilisateur
$SaisieNbrPasswd     = $_GET['nbrPasswd']    ;
$SaisieNbrCaract    = $_GET['nbrCaract']    ;
$SaisieTypePasswd     = $_GET['typePasswd']    ;

// Type de caractères à prendre en compte pour générer les mots de passe (change selon paramètre utilisateur) :
if ($SaisieTypePasswd == '1')
{
$caract = "0123456789";
}
else if ($SaisieTypePasswd == '2')
{
$caract = "abcdefghijklmnopqrstuvwyxz";
}
else if ($SaisieTypePasswd == '3')
{
$caract = "abcdefghijklmnopqrstuvwyxz0123456789";
}
else if ($SaisieTypePasswd == '4')
{
$caract = "abcdefghijklmnopqrstuvwyxz0123456789@!:;,§/?*µ$=+";
}

// Nombre de caractères que le mot de passe doit contenir (= saisie utilisateur) :
$nb_caract = $SaisieNbrCaract;

// On fait un première boucle pour générer des mots de passe jusqu'au nombre indiqué par l'utilisateur
// Puis une seconde boucle pour générer le mot de passe caractère par caractère jusqu'au nombre indiqué par l'utilisateur
for($nbrPasswd = 1; $nbrPasswd <= $SaisieNbrPasswd; $nbrPasswd++)
{
for($i = 1; $i <= $nb_caract; $i++) {

// On compte le nombre de caractères
$Nbr = strlen($caract);

// On choisit un caractère au hasard dans la chaine sélectionnée :
$Nbr = mt_rand(0,($Nbr-1));

// Pour finir, on écrit le résultat :
print $caract[$Nbr];

}
echo "<br>";
}
?>

VI. Exemple

On saisit nos paramètres... puis on clic sur Générer

phppwd1

La liste des mots de passe s'affiche :

phppwd2

Vous pouvez modifier ce script comme vous le souhaitez, notamment au niveau des chaînes de caractères si vous souhaitez exclure ou ajouter des caractères, vous pouvez aussi regrouper tout dans une même page mais il y aura quelques modifications à apporter au code. En ce qui concerne la mise en page, libre à vous de juger si c'est nécessaire...

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

13 commentaires sur “PHP – Générateur de mot de passe paramétrable

  • Super !

    Marche pas si on est en mode POST et si on ajoute d’autre éléments au formulaire, donc code inutile en plus d’être non safe à cause du _GET obligatoire -_-

    Répondre
    • Bonjour,

      Il n’y a pas de raison que cela ne fonctionne pas en POST si le code est bien adapté. Le but de tutoriel n’était pas de proposer un code sécurisé mais uniquement de proposer une solution pour générer des mots de passe simplement. Libre à vous de sécuriser le code… Plutôt que de dire que mon code est inutile, j’aurais préféré que vous donnez quelques conseils pour le sécuriser.

      Bonne journée.
      Florian

      Répondre
    • mécontent ton commentaire ne sert à rien respecte un peu son travail. Par contre tu pourrais stocker les variables du nombre de mdp, de sa taille et de son type en variable de sessions comme ça lorsqu’on génère on est pas obligé de remettre les paramètre que l’on cherche. Sinon très cool ton générateur 😉

      Répondre
      • C’est vrai que j’aurais plus passer par des variables de sessions, le but étant surtout de proposer un générateur de mot de passe simple et efficace, avant tout fonctionnel.
        Merci en tout cas pour ta réponse constructive, il y a beaucoup d’améliorations possibles à partir de la base fournie 😉

        Répondre
  • Bonjour,

    Un problème persiste et je n’arrive pas à trouver la solution.
    Lors de l’affichage des mots de passe, voici le résultat « ‘; } ?> » -> disparait lors de la suppresion du dernier echo.

    De plus, si j’effectue un echo ‘Test’ ; en première ligne, l’echo ne s’affiche pas.

    J’ai étudié le code mais je n’arrive pas à trouver la coquille.

    Merci de votre aide,

    Rémi

    Répondre
  • Super ton Code, il me seras utile pour proposer des mots de passe à mes utilisateurs 🙂

    Merki! 🙂

    Répondre
  • Bonjour Rémi qu’avez vous fait pour retirer cette erreur « ‘; } ?> »?? svp

    Répondre
  • C’est moi ou le 6ième mdp ne correspond pas aux critères.

    Répondre
  • Bonjour comment récuperer valeur du code dans une variable??

    lorsque je mets :
    print $caract[$Nbr];
    sans le print je ne recois qu’un caractère.
    je veux faire un truc pareil: $code= $caract[$Nbr]; pour recuperer le code generer complet et enregistrer en Base de données

    Répondre
    • il te suffit de mettre dans le value de ton input le script complet et de faire un print en fin…
      style : j’ai perso mis juste 1 mot de passe avec 10 caracteres et le type 3
      <input name="mdp" type="hidden" value="<?php
      $SaisieNbrPasswd = 1;
      $SaisieNbrCaract = 10;
      $SaisieTypePasswd = 3;
      if ($SaisieTypePasswd){ $caract = "abcdefghijklmnopqrstuvwyxzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@§?*µ$=+"; }
      $nb_caract = $SaisieNbrCaract;
      for($nbrPasswd = 1; $nbrPasswd <= $SaisieNbrPasswd; $nbrPasswd++) {
      for($i = 1; $i  » />

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.