Dicton du 21 Septembre:
Quand il pleut à la Saint-Matthieu, fais coucher tes vaches et tes boeufs.

Télécharger
Noter:

Générer une chaine aléatoire en PHP

Description

Ce script permet de générer une chaine avec des caractères spéciaux, ou non.

Il est en quelques sorte une amélioration de ce script: Un générateur de mot de passe en PHP et de mes connaissances.

Avec, vous pouvez par exemple:
* Générer un mot de passe
* Générer un code aléatoire qui servira pour vos confirmation d'inscription (entre autres)

Son utilisation est simplifié au max, il vous suffit d'appeler la fonction aleatoire(), plusieurs exemples, ci-dessous:

Code source (PHP)

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


Code source (PHP)

<?php
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;
}
?>

Commentaires

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

Bonjour,

ya til un avantage à utiliser le while plutôt que le for ?

PS: après nombreux test, le script génère bien une chaine aléatoire d'une longueur voulue.

Collez le code que vous utilisez en commentaire avec la balise code svp

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.

Ajouter un commentaire

Pseudo/Nom *
Email *
Message *
La balise [code]Votre code...[/code] peut être utilisée

Captcha * sept - = 3

Les champs marqués d'un * sont obligatoires.

Retour à la liste des scripts

Flag Counter