Allora.. ho scritto un semplice codice per "vedere" se e quanti duplicati ottengo facendo 10000 hash consecutivi.
Se avete un paio di minuti, provate a fare un test. Poi mi dite che ne pensate.
Codice PHP:
<pre>
<?
$arr=array();
for ($i=0; $i<10000; $i++) {
$n=hash('crc32',uniqid(),false);
$find=array_search($n,$arr);
if (is_numeric($find)) echo "found: ".$n."\tindex: ".$i."\n";
$arr[]=$n;
}
print_r($arr);
?>
</pre>
In 2/3 test, dovreste ricevere qualche messaggio del tipo:
codice:
found: 0e838051 index: 6979
Adesso provate a fare un "find" (dal browser") e cercate il "codice" trovato
(in questo caso "0e838051")
Secondo il mio codice, dovrebbero esserci PIU' di 1 risultato.
Invece io ne trovo SOLO UNO!
Come è possibile che venga stampato il "found"?
Il mio codice è sbagliato??
Ditemi che ne pensate, che ci facciamo due risate