Det här borde nog funka som du vill
function generate_password($n) {
$chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$special = "!@£$%&?";
$pass = "";
for($i=1;$i<=$n;$i++) {
mt_srand((double)microtime()*1000000^getmypid());
if ($i % 3 == 0)
$pass .= $special[mt_rand(0,strlen($special)-1)];
else
$pass .= $chars[mt_rand(0,strlen($chars)-1)];
}
return $pass;
}
Blev visst nån ful radbrytning vid YZ"; där, men det ska ju vara på raden innan självklart.. och ett mellanslag innan 0 i $chars.. skumt

