My comment would be on the readability and portability of the code.... Think of someone else coming along to look at that! ;)
This is what I would do; create one function, GenerateString(int $length, int $type) function GenerateString($length = 6, $type = 1) { $string = ''; // seed rand function list($usec, $sec) = explode(' ', microtime()); $microtime = ((float)$usec + (float)$sec); srand((double) $microtime * 1000000); // loop till $length - 1 for ($i = 0; $i < $length; $i++) { // its a password, set the choice to be between 1 and 4 if ($type == 2) { $choice = rand(1, 4); } // its a username, set the choice to be between 1 and 2 else { $choice = rand(1, 2); } switch ($choice) { //generate a random number representing ascii character between a-z case 1: case 2: $min = 97; $max = 122; break; //generate a random number representing ascii character between 0-9 case 3: case 4: $min = 48; $max = 57; break; } // add the character to our string $string .= chr(rand($min, $max)); } // return our generated string return $string; } // for readability define('L_USER', 1); define('L_PASS', 2); //for a username, you want 8 character a - z $username = GenerateString(8, L_USER); //for a username, you want 6 character a - z and 0-9 $password = GenerateString(6 L_PASS); Hope that gives you some alternative ideas to explore > -----Original Message----- > From: Paul Chvostek [mailto:[EMAIL PROTECTED]] > Sent: Friday, 20 December 2002 10:47 AM > To: [EMAIL PROTECTED] > Subject: [PHP] creating random strings? > > > > I need to create batches of randomly generated usernames and passwords. > To start off, I have: > > $validuchars='abcdefghijkmnopqrstuvwxyz'; > $validpchars='abcdefghijkmnopqrstuvwxyz23456789'; > $lenu=strlen($validuchars)-1; > $lenp=strlen($validpchars)-1; > > The first method I came up with was: > > $uid=''; for($i=8;$i;$i--) $uid.=substr($validchars,mt_rand(0,$lenu),1); > $pwd=''; for($i=8;$i;$i--) $pwd.=substr($validchars,mt_rand(0,$lenp),1); > > But I'm wondering if there's any significant benefit to this instead: > > for( $uid=''; strlen($uid)<8; > $uid.=substr($validuchars,mt_rand(0,$lenu),1) ); > for( $pwd=''; strlen($pwd)<8; > $pwd.=substr($validpchars,mt_rand(0,$lenp),1) ); > > I can't see any difference in speed. Does the savings of the $i variable > have any signficance at all? > > Another thing I was thinking of doing was making more pronouncable > usernames with something like: > > $cons="bcdfghjklmnpqrstvwxyz"; > $vowels="aeiouy"; > $lenv=strlen($vowels)-1; > $lenc=strlen($cons)-1; > $uid=""; for($i=4;$i;$i--) > $uid.=substr($cons,mt_rand(0,$lenc),1) . > substr($vowels,mt_rand(0,$lenv),1); > > Any thoughts? > > Incidentally, I'm guaranteeing uniqueness of usernames with a unique > index in the MySQL table that stores this stuff. Including the INSERT, > I can create about 100000 of these in 60 seconds. So this is more a > question of style than of practical limitations. ;) > > -- > Paul Chvostek <[EMAIL PROTECTED]> > Operations / Abuse / Whatever +1 416 598-0000 > it.canada - hosting and development http://www.it.ca/ > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php