| Autor | Zpráva | ||
|---|---|---|---|
| tomas3333 Profil |
#1 · Zasláno: 31. 8. 2010, 12:16:44
Potrebujem generovať unikátny string v dĺžke 5 alebo 6 znakov, zložený z písmen a čísiel. Najjednoduchšie sa zdá byť využiť sčasti uniqid(); tak, že zoberiem posledných 5 znakov a na začiatok pridám náhodný znak (čiže číslo alebo písmeno). Na 10000 pokusoch za sebou som dostal 2 duplicity. Ďalším riešením by bolo zobrať to celé náhodne a generovať každý znak osobitne.
Je nejaká iná možnosť ako takýto unikátny string vygenerovať? |
||
| radas Profil * |
#2 · Zasláno: 31. 8. 2010, 12:19:44
a použit timestamp by nešlo?
|
||
| Str4wberry Profil |
#3 · Zasláno: 31. 8. 2010, 12:24:15
function generovatHeslo($znaku) {
for ($i = 1; $i < $znaku; $i++) {
$nahoda = mt_rand(0, 2);
if ($nahoda == 0) {
// velká písmena
$pswd.= chr(mt_rand(65, 90));
}
elseif ($nahoda == 1) {
// malá písmena
$pswd.= chr(mt_rand(97, 122));
}
else {
// čísla
$pswd.= chr(mt_rand(48, 57));
}
}
return $pswd;
} |
||
| tomas3333 Profil |
#4 · Zasláno: 31. 8. 2010, 12:50:18
radas:
timestamp je pridlhý, navyše uniqid sa genruje z microtime(); Str4wberry: no to je to druhé riešenie ktoré som spomínal, generovať každý znak náhodne. Asi je pravda, že by takto bolo kolízií menej. Dík. |
||
|
Časová prodleva: 16 let
|
|||
0