Mi permetto di scriverti un metodo alternativo e (forse) più semplice.
Codice PHP:
// credo una stringa dei caratteri che mi interessa mettere
// nella password casuale
$caratteri = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// mescolo un po' la stringa
$caratteri = str_shuffle($caratteri);
// numero dei caratteri da prelevare
$num = 8;
// ecco il nome della variabile che
// conterrà la password casuale
$password_casuale = "";
// ciclo per il numero di caratteri
// ad ogni ciclo prendo un carattere a caso dalla stringa
for ($i=0; $i<$num; $i++) {
$password_casuale .= substr($caratteri, rand(1, strlen($caratteri) ), 1);
}