2011-06-14 2 views
1

Possible en double:
PHP: How to generate a random, unique, alphanumeric string?façon rapide de générer jeton - PHP

je veux générer jeton aléatoire [alphanumérique] pour la longueur aléatoire [entre 4-6] caractères.
Quelqu'un peut-il aider?

+2

plus http://stackoverflow.com/search?q=random+string+php – Gordon

+0

non, ils utilisent HASHING , j'ai besoin d'un petit, alors pourquoi devrais-je gaspiller le processeur? – Sourav

+1

La question a aussi une réponse avec pseudocode qui implémente ce que vous voulez. – NikiC

Répondre

4

Tout d'abord, vous pouvez juste obtenir un nombre aléatoire entre 10 + 26 + 26 = 62 6 fois, puis calculer la chaîne pour résultat, cela semble assez facile.

<?php 
function() 
{ 
$letters={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,10} 
return array_rand($letters).array_rand($letters)......... // you get the point 

?> 
9

vous pouvez utiliser uniqid (rechercher "jeton" dans les exemples donnés ici) et le raccourcir avec substr.

Cordialement, Mike

2

ou si vous préférez la façon 'dur' ...

$len = random(4,6); 
$token = array(); 
for ($i = 0; $i < $len; $i++) { 
    $ord = 0; 
    switch(random(1,3)) { 
    case 1: // 0 - 9 
     $ord = random(48,57); 
     break; 
    case 2: // A - Z 
     $ord = random(65,90); 
     break; 
    case 3: // a - z 
     $ord = random(97,112); 
     break; 
    } 
    $token[] = chr($ord); 
} 
+0

ce ne serait pas vraiment aléatoire, beaucoup plus de chances d'obtenir un '3' puis 'O' ... voir ma méthode pour une meilleure solution – fingerman

+0

J'étais sur le point de donner aussi, mais je suis trop paresseux pour écris tous ces caractères alphanumériques. de toute façon, comment pouvez-vous dire que la chance d'obtenir '3' est plus élevée? – LeleDumbo

+0

cause, pour obtenir '3' vous avez le choix 1-3, puis 1-10, total 1/30 pour obtenir 'O' vous avez le choix 1-3, puis 1-26, total 1/78. donc, cette méthode n'est pas assez bonne ... – fingerman

Questions connexes