Génération de nom de fichier unique
Je veux générer un nom de fichier unique pour le téléchargement des fichiers. Ils devraient être de 5 caractères, et ont les caractères suivants uniquement: abcdefghijklmnopqrstuvwxyz0123456789
. C'est mon code:
$chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
$length = 5;
$filename = '';
for($i = 0; $i < $length; $i++)
{
$filename += $chars[mt_rand(0, 36)];
}
echo $filename;
Mais je finis toujours avec 1 ou 2 caractères entiers longs, jamais n'importe quelle chaîne de caractères. Si j'exécute ce code:
$chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
$length = 5;
$filename = '';
for($i = 0; $i < $length; $i++)
{
echo $chars[mt_rand(0, 36)];
}
il fonctionne très bien, et j'obtiens le résultat suivant: 8iwzf
.
Que pouvais-je fait de mal ici? Merci!
- pas
+=
mais.=
dansfilename .= $chars
Vous devez vous connecter pour publier un commentaire.
Vous ajoutez (+=). Vous voulez concaténer une chaîne à l'aide de dot.
$filename .= $chars[mt_rand(0, 36)];
5 caractères ne pas vous donner beaucoup de caractère unique (l'entropie), alors vous courez le risque de duplication des noms de fichiers.
Pourquoi ne pas utiliser
Vous pouvez ajouter de l'entropie par l'ajout de préfixes et d'autres choses à faire de risques de duplication (dans le monde réel) néant.
Prêt-à-utiliser le code: