Accueil > > > GÉNÉRATEUR DE MOTS DE PASSE
GÉNÉRATEUR DE MOTS DE PASSE
Information sur le tutoriel
Description
En PHP, nous sommes souvent invités à générer des codes quelconques de manière aléatoire. Ça peut être utile lorsqu'un membre perd son mot de passe ou encore lors de l'inscription afin de valider bref, trouvez-y l'utilité que vous voulez, je vous montre ici comment créer un générateur de codes aléatoires contenant des lettres majuscules, des lettres minuscules ou encore des chiffres. Notez que j'ai rédigé ce tutorial principalement pour mon site, donc je vous invite à vous référez à mon site (http://www.la-page.qc.ca) si vous obtenez un quelconque problème dans la réalisation de notre générateur de mots de passe.
Tutorial
Donc, voici ce que nous verrons dans le tutorial : - Les arrays en PHP
- Générer un nombre aléatoire
- Créer une fonction pour générer des codes aléatoires
Les arrays
Comme dans tous les langages, PHP nous permet d'utiliser des arrays. Les arrays sont ni plus ni moins que des tableaux, pouvant contenir des informations quelconques. Pour créer un array, nous utilisons le mot réservé array et nous entrons des valeurs pour chaque case du tableau, séparés par des virgules. Un array peut contenir des chaînes de caractères ou encore des nombres. Exemple : <?php $mon_array = array('chaine', 3, 'autrevaleur'); ?>
Nous pourrions ajouter autant de valeur que nous le désirons, ça n'a aucune importance. Pour accéder à ces valeurs, nous utilisons le nom du array avec entre crochets le numéro de la case à laquelle nous voulons accéder. Notez bien que la numérotation des cases commence toujours à 0. Donc, si je veux accéder à la première case, je procède ainsi : <?php $mon_array = array('chaine', 3, 'autrevaleur');
echo $mon_array[0]; ?>
Et j'obtiendrai comme résultat l'affichage de "chaine" sur ma page. Il est possible de créer des associations afin d'accéder aux cases autrement que par des numéros à l'aide du symbole =>. Sur l'exemple qui suit, je créer une variable $config qui me permettra de me connecter à ma base de données : <?php $config = array('host' => 'localhost', 'user' => 'alexbad', 'pass' => 'ale123', 'base' => 'lapage');
//Et si je veux me connecter : $connect = mysql_connect($config['host'], $config['user'], $config['pass']); mysql_select_db($config['base']);
mysql_close($connect); ?>
Il est aussi possible de faire des déclaration plus simples, sans utiliser la fonction array : <?php $config = array(); //Je déclare mon tableau $config['host'] = 'localhost'; $config['user'] = 'alexbad'; $config['pass'] = 'ale123'; $config['base'] = 'lapage'; ?>
Ce qui donnera exactement le même résultat. Voilà, c'est suffisant pour les tableaux, voyons maintenant comment générer un nombre aléatoire. Générer un nombre aléatoire
Pour générer un nombre aléatoire, nous devons utiliser la fonction rand(). Cette fonction requiert deux paramètres : - Le nombre de départ
- Le nombre limite
Par exemple, si je veux générer un nombre aléatoire entre 98 et 504, je procède ainsi : <?php $nombre_aleatoire = rand(98, 504); //Cette variable contient désormais un nombre aléatoire entre 98 et 504, il sera différent à chaque exécution du script
//Et on peut l'afficher ;)
echo $nombre_aleatoire; ?>
C'est aussi simple que ça pour les nombres aléatoires, voyons maintenant comment mettre en relation les arrays et la fonction rand() pour créer un générateur de mots de passe. Générer un code aléatoire
Nous allons procéder simplement, nous créerons une fonction qui nécessitera un paramètre : le nombre de caractères du code à générer. Moi, j'appelle ma fonction "generer", vous pouvez faire comme vous voulez : <?php function generer($longueur) {
} ?>
Maintenant, nous allons créer une boucle qui générera aléatoirement un seul et unique caractère. Si notre boucle tourne 7 fois, nous aurons un code de 7 caractères aléatoires, simple non? <?php function generer($longueur) { for ($i = 1; $i <= $longueur; $i++) { //On génère le code }
} ?>
Notre code pourra contenir trois types de caractères : - Des lettres minuscules
- Des lettres majuscules
- Des chiffres
Pour les chiffres, c'est simple, nous utiliserons la fonction rand(). Par contre, pour les lettres, majuscules et minuscules, nous utiliserons des arrays. Dans ces arrays, nous stockerons toutes les lettres de l'alphabet. Exemple : <?php function generer($longueur) { $minuscules = 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'); for ($i = 1; $i <= $longueur; $i++) { //On génère le code }
} ?>
Maintenant, à chaque tour de boucle, nous ajouterons un caractère à notre code et à la toute fin, lorsque la boucle est terminée, nous retournons le résultat. Pour générer des lettres aléatoires, nous créerons un nombre aléatoire situé entre 0 et 25, puisque notre array commence à 0. Et nous accéderons à la case du tableau correspondante. Pour déterminer quel type de caractère nous devons générer, nous utiliserons un nombre aléatoire compris entre 0 et 2 inclusivement. Si c'est 0, c'est un chiffre, si c'est 1, c'est une lettre majuscule et finalement, si c'est 2, c'est une lettre minuscule. Pour tester le tout, j'utilise le branchement conditionnel switch(). Vous pouvez le faire très bien avec des if(), ça donne exactement le même résultat. Notez que sur l'exemple qui suit, j'ai déclaré la variable $code, à laquelle nous ajouterons un caractère à chaque tour de boucle : <?php function generer($longueur) { $minuscules = 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');
$code = ''; //On déclare notre variable for ($i = 1; $i <= $longueur; $i++) { //On génère un type aléatoire $type = rand(0,2);
switch ($type) { case 0: //On génère un chiffre break; case 1: //On génère une lettre majuscule break; case 2: //On génère une lettre minuscule break; } } return $code; //On retourne le code généré au complet } ?>
Ensuite, comme expliqué plus haut, nous générons selon le cas. Remarquez bien comment je procède pour les lettres : <?php function generer($longueur) { $minuscules = 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');
$code = ''; //On déclare notre variable for ($i = 1; $i <= $longueur; $i++) { //On génère un type aléatoire $type = rand(0,2);
switch ($type) { case 0: $caractere = rand(0,9); $code .= $caractere; break; case 1: $nbre_aleatoire = rand(0, 25); $caractere = $majuscules[$nbre_aleatoire]; $code .= $caractere; break; case 2: $nbre_aleatoire = rand(0, 25); $caractere = $minuscules[$nbre_aleatoire]; $code .= $caractere; break; } } return $code; //On retourne le code généré au complet } ?>
Aussi simple que ça  . Et tiens, pour ceux qui ne sont pas habitués aux switch(), voici comment procéder avec des simples conditions : <?php function generer($longueur) { $minuscules = 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');
$code = ''; //On déclare notre variable for ($i = 1; $i <= $longueur; $i++) { //On génère un type aléatoire $type = rand(0,2); if ($type == 0) { $caractere = rand(0,9); $code .= $caractere; } if ($type == 1) { $nbre_aleatoire = rand(0, 25); $caractere = $majuscules[$nbre_aleatoire]; $code .= $caractere; } if ($type == 2) { $nbre_aleatoire = rand(0, 25); $caractere = $minuscules[$nbre_aleatoire]; $code .= $caractere; } } return $code; //On retourne le code généré au complet } ?>
Essayez, ça donne exactement le même résultat ;) Ensuite, pour utiliser cette fonction, vous devez l'appeller, comme cela : <?php $nbre_chars = 7; //Changez ce nombre, vous verrez ;)
$code = generer($nbre_chars);
echo $code; //On affiche le résultat :p ?>
Remarque : Pour utiliser votre fonction, elle doit être déclarée sur la page sur laquelle elle est appellée. Vous pouvez aussi la placer en include, ça donnera le même résultat. Sinon, ça ne fonctionnera pas.Voilà, c'est déjà terminé, c'était pas bien difficile. N'hésitez pas à poster vos commentaires ou encore à poser vos questions, ça me fera toujours plaisir d'y répondre  .
Commentaires
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
CHAMPS TIMECHAMPS TIME par vargas
Cliquez pour lire la suite par vargas
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|