View Full Version : Generate random key
Mythotical
11-29-2007, 03:46 AM
I haven't figured out yet how to generate a random key that consists of letters and numbers. I managed to get it to generate numbers but for the life of me I can't seem to figure out how to generate a random alphanumeric key.
Here is what I am using for numeric only:
mt_rand();
I know, thats simple, but I am using it temporarily till I figure out how to generate a key that consists of alphanumeric and is length is 16, no matter how many key's it generates.
Any help greatly appreciated
EDIT: Also, I have read quite a few articles on php.net but alas have come up empty handed.
Thanks in advance
Steve M
MoT3rror
11-29-2007, 03:53 AM
This page should help you.
http://www.i-fubar.com/random-string-generator.php
Hossie
11-29-2007, 12:39 PM
Is the link a joke? 2 lines are enough:
<?php
function randomstr($length){
for($i=0; $i<$length; $i++)$str[$i]=chr(rand(97, 122));
return implode("", $str);
}
echo randomstr(16);
?>
Mythotical
11-29-2007, 12:58 PM
Thanks MoT3rror and Hossie.
Hossie, what you gave me worked but it gave me a 16 letter string. I need it to be a mix of letters and numbers.
Hossie
11-29-2007, 01:08 PM
So why don't you just use some hash algorithm?
<?php
function randomstr($length){
return substr(md5(time()*rand(1, 100)), 0, $length);
}
echo randomstr(16);
?>
Mythotical
11-29-2007, 01:12 PM
Perfect, thats what I was trying to figure out last night but couldn't. You just saved me a headache Hossie. Thanks.
That link above though seemed good but alot of lines of code. Glad you made a post.
MoT3rror
11-29-2007, 07:20 PM
You must not have read the first part of the page.
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;
}
This function defines what the random characters going to be.
The second funtion.
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;
}
This function uses the characters and numbers to output a random string on letters and numbers.
Call on this to come with 16.
get_rand_id(16);
Guest190829
11-29-2007, 07:27 PM
Using one of the hashing algorithms would be the most efficient solution - that is what hashing is for. :)
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.