Existem várias técnicas para se fazer isso, vou mostrar 2, a primeira que lhes mostrarei, é a mais complicada, mas não é de forma errada, a segunda é de forma simples e rapida.

Vou escrever o código e em seguida, explicar cada função utilizada.

<?php
function SenhaAleatoria($charnumber){
$array = explode(,, “A,B,C,D,E,F,G,H,I,J,K,1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h,i,j,k”);
shuffle($array);
$pass = implode($array, “”);
return substr($pass, 0, $charnumber);
}
$pass = SenhaAleatoria(10);
print $pass;
?>

explode
Retorna uma matriz de strings, cada uma como substring de string formada pela divisão dela a partir do delimiter .

$array = explode(,, “A,B,C,D,E,F,G,H,I,J,K,1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h,i,j,k”);

shuffle
Essa função serve para mistrurar em aleatório os elementos do array.
ex: shuffle($array);

implode
Retorna uma string contendo os elementos da matriz na mesma ordem com uma ligação entre cada elemento.
ex: $pass= implode($array, “”);

substr
Retorna a parte de string especificada pelo parâmetro start e length.
ex: return substr($pass, 0, $charnumber);

É isso ai, agora vocês tem um gerador de senhas aleatórios com 9 linhas de códigos.

Agora uma maneira rapida e fácil.

<?php
$senha = md5(date(”D M j G:i: s T Y”));
print substr($senha, 1, 10);
?>

MD5 é uma função de criptografia, no caso acima, usei o MD5 para criptografar a hora e data de hoje.

Opa, uma nova maneira de gerar senhas, com apenas 2 linhas de códigos.

Estude mais sobre funções.
br.php.net