Teda asi jsem tu pozdě, ale třeba se to může hodit i někomu jinému. Osobně to dělám takhle (toto vygeneruje 6-ti místné heslo, které může obsahovat písmena a-z a čísla 0-9 - pouze malá písmena):
$nove_heslo = base_convert(mt_rand(base_convert(100000 , 36, 10), base_convert("zzzzzz", 36, 10)) , 10, 36);