Dicton du 16 Janvier:
Prépare pour Saint-Marcel, tes graines nouvelles.

Télécharger
Noter:

Ajouté le 27/02/2015
Visionné 2683 fois

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,

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


ATTENTION! Ce formulaire est exclusivement réservé aux commentaires
Pour toutes demandes d'aide, veuillez ajouter votre demande sur le forum svp

Captcha * 7 + = quatorze

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

Retour à la liste des scripts

Flag Counter