Maison >développement back-end >tutoriel php >Plusieurs façons simples de générer des mots de passe aléatoires en php
L'utilisation de PHP pour développer des applications, en particulier des programmes de sites Web, nécessite souvent de générer des mots de passe aléatoires. Par exemple, un mot de passe aléatoire est généré pour l'enregistrement de l'utilisateur, et un mot de passe aléatoire est également requis pour la réinitialisation du mot de passe de l'utilisateur. Un mot de passe aléatoire est une chaîne de longueur fixe. J'ai rassemblé ici plusieurs méthodes pour générer des chaînes aléatoires pour votre référence.
Générer un entier aléatoire de 33 à 126, tel que 35,
convertir 35 en correspondant Caractères de code ASCII, tels que 35 correspondant à #
Répétez les étapes ci-dessus 1 et 2 n fois pour vous connecter avec un mot de passe à n chiffres
Instructions :
Cet algorithme utilise principalement deux fonctions. La fonction mt_rand ( int $min , int $max )
est utilisée pour générer des entiers aléatoires, où $min – $max
est la plage de codes ASCII. Ici, elle est 33-126. ajusté selon les besoins, comme les codes ASCII. Le bit 97 —— 122
dans le tableau correspond à a – z
et 65 —— 90
correspond à la lettre anglaise de A —— Z
Pour plus de détails, veuillez vous référer au tableau des codes ASCII.
<?php function create_password($pw_length = 8) { $randpwd = ''; for ($i = 0; $i < $pw_length; $i++) { $randpwd .= chr(mt_rand(33, 126)); } return $randpwd; }// 调用该函数,传递长度参数 $pw_length = 6echo create_password(6);
Prérégler une chaîne $chars
, comprenant a – z,A – Z,0 – 9,
et quelques caractères spéciaux
Choisissez au hasard un caractère dans la chaîne $chars
Répétez la deuxième étape n fois pour obtenir un mot de passe de longueur n
<?php function generate_password( $length = 8 ) { // 密码字符集,可任意添加你需要的字符 $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_[]{}<>~`+=,.;:/?|'; $password = ''; for ( $i = 0; $i < $length; $i++ ) { // 这里提供两种字符获取方式 // 第一种是使用 substr 截取$chars中的任意一位字符; // 第二种是取字符数组 $chars 的任意元素 // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); $password .= $chars[ mt_rand(0, strlen($chars) - 1) ]; } return $password; } echo generate_password(6);
Préréglez un tableau de caractères $chars
, y compris a – z,A – Z,0 – 9
, et certains caractères spéciaux
Utilisez array_rand()
pour sélectionner au hasard $chars
éléments $length
selon le tableau de noms de clé obtenu $keys
, et retirez les caractères d'épissage de caractères du tableau $chars
chaîne. L’inconvénient de cette méthode est que les mêmes caractères ne seront pas récupérés de manière répétée.
<?php function make_password( $length = 8 ) { // 密码字符集,可任意添加你需要的字符 $chars = 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', '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', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!', '@','#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '[', ']', '{', '}', '<', '>', '~', '`', '+', '=', ',', '.', ';', ':', '/', '?', '|'); // 在 $chars 中随机取 $length 个数组元素键名 $keys = array_rand($chars, $length); $password = ''; for($i = 0; $i < $length; $i++) { // 将 $length 个数组元素连接成字符串 $password .= $chars[$keys[$i]]; } return $password; } echo make_password(6);
Utilisez md5 pour crypter l'horodatage actuel et intercepter certains chiffres. Le mot de passe généré ne contient que des lettres et des chiffres.
time() Obtenez l'horodatage Unix actuel
Cryptez l'horodatage obtenu lors de la première étape avec md5()
Utilisez le résultat de la deuxième étape de cryptage et interceptez n chiffres pour obtenir le mot de passe souhaité
<?php function get_password( $length = 8 ) { $str = substr(md5(time()), 0, $length); return $str; } echo get_password(6);
str_shuffle — Au hasard brouiller une chaîne
<?php function random_pass( $length = 8 ){ $password = ''; $chars = 'abcdefghijkmnpqrstuvwxyz23456789ABCDEFGHIJKMNPQRSTUVWXYZ'; //去掉1跟字母l防混淆 if ($length > strlen($chars)) {//位数过长重复字符串一定次数 $chars = str_repeat($chars, ceil($length / strlen($chars))); } $chars = str_shuffle($chars); $password = substr($chars, 0, $length); return $password; } echo random_pass(6);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!