function aleatoire($longueur=5,$choix="speciaux,chiffres,lettresmin,lettresmaj,tous"){
$choix=explode(",",$choix);
$ChaineAutiliser="";
$CaracteresSpeciaux="~#{[|`$^@]*)\"^'}@^!:/.?,+-(";//mettez tous vos caractères spéciaux, faite attention que ces caractères sont susceptibles d'aller dans une base de données, suivant votre utilisation
foreach($choix as $lechoix){
switch($lechoix){
case "speciaux":
$ChaineAutiliser.=$CaracteresSpeciaux;
break;
case "chiffres":
$ChaineAutiliser.="0123456789";
break;
case "lettresmin":
$ChaineAutiliser.="abcdefghijklmnopqrstuvwxyz";
break;
case "lettresmaj":
$ChaineAutiliser.="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
break;
case "tous":
$ChaineAutiliser="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".$CaracteresSpeciaux;
break;
default:
$ChaineAutiliser.="ABCDEFGHIJKLMNOPQRSTUVWXYZ";//si le choix n'est pas bon, on met une chaine par défaut
}
}
$ChaineDeRetour="";
for($i=1;$i<=$longueur;$i++){//notre chaine de retour contiendra le nombre de caractères demandés
$ChaineDeRetour .= substr($ChaineAutiliser,rand(0,strlen($ChaineAutiliser)-1),1);//rand(1,le nombre de caractère total utilisables) + 1 nous permet de prendre un seul caractère aléatoirement, dans les types de chaines demandées, pour l'ajouter au fur et à mesure grâce à .= qui dit "ajouter à la suite"
}
return $ChaineDeRetour;
}
?>
//Son utilisation est simplifié au max, il vous suffit d'appeler la fonction aleatoire(), plusieurs exemples, ci-dessous:
aleatoire(15);//une chaine d'une longueur de 15 caractères, avec les caractères par défauts, en l'occurrence, des lettres majuscules
aleatoire(7,"tous");//une chaine avec tous les caractères, d'une longueur de 7 caractères
aleatoire(10,"speciaux,lettresmaj,chiffres");//une chaine avec des caractères spéciaux, des lettres en majuscules et des chiffres, d'une longueur de 10 caractères
J'espère que ce script gratuit vous est utile.Pour soutenir mon travail, un simple don ou mettre une note est grandement apprécié.
Vous cherchez à pousser encore plus loin vos idées ou à les concrétiser avec un site internet sur mesure ? Je suis là pour vous aider ! Mon expérience en développement web est à votre disposition.
Que ce soit la création de votre site web pro ou l'apport de fonctionnalités avancées à votre projet, contactez-moi pour en discuter et avoir un devis gratuit personnalisé.
Mon objectif est de vous offrir des solutions sur mesure qui répondent à vos besoins, et votre vision associée à mon expertise donnera vie à votre projet web parfait. Contactez-moi aujourd'hui, je réponds en général en moins d'une heure :
Demander un deviscpustack le 12 Janvier 2017 à 08:29
Bonjour,
Petit soucis : la longueur de la chaine retournée est elle aussi aléatoire ;-)
A la place du
for ($i..
mieux vaut mettre un
while (strlen($ChaineDeRetour)< $longueur)
@+
Fabien
admin le 01 Décembre 2017 à 21:13
Bonjour,
j'ai mis à jour le script car il avait un bug, en effet au niveau du for($i=0... j'ai remplacé par for($i=1... afin de de faire réellement $longueur caractères et j'ai ensuite corrigé un bug au niveau du rand(1... que j'ai remplacé par rand(0... ce qui est plus logique, en fin j'ai rajouté un -1 après le strlen($ChaineAutiliser)-1 pour pas créer de bug avec la fonction substr qui pourrait prendre un caractère après le dernier caractère de la chaine à utiliser, soit rien, ce qui créé un booléan soit un false et donc un caractère en moins de ce qu'on lui demander d'afficher.