Version: 1.0
Type: Function
Category: Algorithms
License: GNU General Public License
Description: Create a random pronounceable password, with random case. Can be easily customized.
<?php
/* *
* Function : string rand_pass()
*
* Purpose : Returns a random but pronounceable password.
* Note: You may edit the $num_letters and $array variables
*
* Author: Sebastien Cevey <seb@cine7.net>
* Project: Web OpenScripts <http://wos.sourceforge.net>
* */
function rand_pass() {
# Pronounceable pieces of words
$array = array(
"ap","dus","tin","rog","sti","rev","pik","sty","lev","qot","rel","vid",
"kro","xo","pro","wia","axi","jer","foh","mu","ya","zol","gu","pli","cra",
"den","bi","sat","ry","qui","wip","fla","gro","tav","peh","gil","lot",
"kal","zan","noc","bat","tev","lun","pal","hom","cun","wos","vox"
);
# The number of letters
$num_letters = 6;
# Fraction of uppercased letters (randomized too...)
$uppercased = 3;
# Randomize on microseconds
mt_srand ((double)microtime()*1000000);
# Create random pass (too long for the moment)
for($i=0; $i<$num_letters; $i++)
$pass .= $array[mt_rand(0, (count($array) - 1))];
# Make sure there is not twice the same letter one after the other
for($i=1; $i<strlen($pass); $i++) {
if(substr($pass, $i, 1) == substr($pass, $i-1, 1))
$pass = substr($pass, 0, $i) . substr($pass, $i+1);
}
# Randomize the pass case [for each letter]
for($i=0; $i<strlen($pass); $i++) {
if(mt_rand(0, $uppercased) == 0)
$pass = substr($pass,0,$i) . strtoupper(substr($pass, $i,1)) . substr($pass, $i+1);
}
# Shorten it now
$pass = substr($pass, 0, $num_letters);
# Return the password
return $pass;
}
echo rand_pass();
?>