Hi
How can I generate a random string as my users password to email them?
string generation
Moderator: General Moderators
- tecktalkcm0391
- DevNet Resident
- Posts: 1030
- Joined: Fri May 26, 2006 9:25 am
- Location: Florida
one way is just do this:
Code: Select all
$longString = md5($email);
$passwordToSend = substr($longString,0,8); // makes the md5 string smallerMore secure way:
or even
Code: Select all
$longString = md5($email.time());
$passwordToSend = substr($longString,0,8); // makes the md5 string smallerCode: Select all
$longString = md5($email.rand(0, 32768));
$passwordToSend = substr($longString,0,8); // makes the md5 string smaller
Last edited by VladSun on Tue Jul 31, 2007 8:39 am, edited 1 time in total.
- tecktalkcm0391
- DevNet Resident
- Posts: 1030
- Joined: Fri May 26, 2006 9:25 am
- Location: Florida
another way:
Code: Select all
function assign_rand_value($num)
{
// accepts 1 - 36
switch($num)
{
case "1":
$rand_value = "a";
break;
case "2":
$rand_value = "b";
break;
case "3":
$rand_value = "c";
break;
case "4":
$rand_value = "d";
break;
case "5":
$rand_value = "e";
break;
case "6":
$rand_value = "f";
break;
case "7":
$rand_value = "g";
break;
case "8":
$rand_value = "h";
break;
case "9":
$rand_value = "i";
break;
case "10":
$rand_value = "j";
break;
case "11":
$rand_value = "k";
break;
case "12":
$rand_value = "l";
break;
case "13":
$rand_value = "m";
break;
case "14":
$rand_value = "n";
break;
case "15":
$rand_value = "o";
break;
case "16":
$rand_value = "p";
break;
case "17":
$rand_value = "q";
break;
case "18":
$rand_value = "r";
break;
case "19":
$rand_value = "s";
break;
case "20":
$rand_value = "t";
break;
case "21":
$rand_value = "u";
break;
case "22":
$rand_value = "v";
break;
case "23":
$rand_value = "w";
break;
case "24":
$rand_value = "x";
break;
case "25":
$rand_value = "y";
break;
case "26":
$rand_value = "z";
break;
case "27":
$rand_value = "0";
break;
case "28":
$rand_value = "1";
break;
case "29":
$rand_value = "2";
break;
case "30":
$rand_value = "3";
break;
case "31":
$rand_value = "4";
break;
case "32":
$rand_value = "5";
break;
case "33":
$rand_value = "6";
break;
case "34":
$rand_value = "7";
break;
case "35":
$rand_value = "8";
break;
case "36":
$rand_value = "9";
break;
}
return $rand_value;
}
function get_rand_id($length)
{
if($length>0)
{
$rand_id="";
for($i=1; $i<=$length; $i++)
{
mt_srand((double)microtime() * 1000000);
$num = mt_rand(1,36);
$rand_id .= assign_rand_value($num);
}
}
return $rand_id;
}
// copy the functions above....and then use this to acutally get a string...
$passwordToSend = get_rand_id(50); // 50 is how long you want the string...
//the only thing is this only generates lowercase letters
//really there are plenty of ways to do what you want to@tecktalkcm0391
You may simplify the encoding by using chr()/ord(0 functions:
And it has lower/upper case property.
BTW:
You may simplify the encoding by using chr()/ord(0 functions:
Code: Select all
function get_rand_id($length)
{
if($length>0)
{
$rand_id="";
for($i=1; $i<=$length; $i++)
{
mt_srand((double)microtime() * 1000000);
$num = rand(ord('A'), ord('z'));
$rand_id .= chr($num);
}
}
return $rand_id;
}
// copy the functions above....and then use this to acutally get a string...
$passwordToSend = get_rand_id(50); // 50 is how long you want the string...BTW:
PS: I must notice that my function generates letter-string - no digits in it.Note: As of PHP 4.2.0, there is no need to seed the random number generator with srand() or mt_srand() as this is now done automatically.
- superdezign
- DevNet Master
- Posts: 4135
- Joined: Sat Jan 20, 2007 11:06 pm
...
The possible values string could also be generated by a loop and regex, but why bother?
Code: Select all
function GenerateString($length)
{
$possibleValues = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123459789';
$max = strlen($possibleValues) - 1;
$str = '';
for($i = 0; $i < $length; $i++)
$str .= $possibleValues[rand(0, $max)];
return $str;
}