Last active
December 14, 2015 17:38
-
-
Save pankajparashar-zz/5123476 to your computer and use it in GitHub Desktop.
A function for generating a random password of whatever length you need. You don't get super-secure passwords from this but they certainly should be good enough for e.g. a "forgotten your password?" feature. To avoid generating passwords containing offensive words, vowels are excluded from the list of possible characters. To avoid confusing user…
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function generatePassword ($length = 8) | |
{ | |
// start with a blank password | |
$password = ""; | |
// define possible characters - any character in this string can be | |
// picked for use in the password, so if you want to put vowels back in | |
// or add special characters such as exclamation marks, this is where | |
// you should do it | |
$possible = "2346789bcdfghjkmnpqrtvwxyzBCDFGHJKLMNPQRTVWXYZ"; | |
// we refer to the length of $possible a few times, so let's grab it now | |
$maxlength = strlen($possible); | |
// check for length overflow and truncate if necessary | |
if ($length > $maxlength) { | |
$length = $maxlength; | |
} | |
// set up a counter for how many characters are in the password so far | |
$i = 0; | |
// add random characters to $password until $length is reached | |
while ($i < $length) { | |
// pick a random character from the possible ones | |
$char = substr($possible, mt_rand(0, $maxlength-1), 1); | |
// have we already used this character in $password? | |
if (!strstr($password, $char)) { | |
// no, so it's OK to add it onto the end of whatever we've already got... | |
$password .= $char; | |
// ... and increase the counter by one | |
$i++; | |
} | |
} | |
// done! | |
return $password; | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment