随机码生成器

时间:2011-04-10 23:42:31

标签: php

我希望有一个用PHP编写的随机代码生成器,它将生成类似于http://jsfiddle.net/ UtKYn

的混合大小写代码

在我开始重新发明轮子之前,也许有人可以指出我正确的方向。

感谢。


更新:

JS小提琴只是他们为每个代码项目生成的代码的一个例子。 混合的情况可以增加组合的数量,同时保持相当短。

我找到了以下功能。生成重复的概率是多少?我是否需要添加数据库查询来检查存储在db?

中的其他代码的dupes
function rand_string($min = "8", $max = "30") 
{
    $code = NULL;
    for($i=0;$i<$min;$i++) 
    {
        $char = chr(rand(48,122));
        while(!ereg("[a-zA-Z0-9]", $char))
        {
            if($char == $lchar) { continue; }
            $char = chr(rand(48,90));
        }
      $pass .= $char;
      $lchar = $char;
    }
    return $pass;
}

5 个答案:

答案 0 :(得分:5)

这是一个简单的随机字符串生成器,$字符可以是您可能希望的任何字母/数字/特殊。我使用了所有可用的特殊字符和常规字符。您只需传递所需的随机生成字符串的长度,或者将生成默认的8个字符。只需删除您不想使用的任何字符。

 function genRandomString($length = 8) {
     $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~!@#$%^&*()_+\|]}[{;:<,>.?/';
     $string = '';
     for ($p = 0; $p < $length; $p++) {
         $string .= $characters[mt_rand(0, strlen($characters)-1)];
     }
     return $string;
 }

答案 1 :(得分:2)

这些网站正在使用的代码基本上只是32位基础。有关详细信息,请参阅http://en.wikipedia.org/wiki/Base32

关于对唯一键的检查,您通常希望对字段应用唯一键约束,所以是的,您需要检查现有代码是否存在,或检查插入是否失败。但是,如果您使用自动增量ID并将其转换为base 32,则不需要执行任何检查,因为MySQL正在为您生成唯一ID。

答案 2 :(得分:1)

看一下这篇文章:

http://blog.kevburnsjr.com/php-unique-hash

它提供了一种创建字母数字哈希的方法,该哈希值是唯一的并且不会重复(至少在它循环之前)。这是比生成随机数和测试唯一性更好的方法。

答案 3 :(得分:0)

答案 4 :(得分:0)

你可以试试这个,

    <?php
    function rand_code($len)
    {
     $min_lenght= 0;
     $max_lenght = 100;
     $bigL = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     $smallL = "abcdefghijklmnopqrstuvwxyz";
     $number = "0123456789";
     $bigB = str_shuffle($bigL);
     $smallS = str_shuffle($smallL);
     $numberS = str_shuffle($number);
     $subA = substr($bigB,0,5);
     $subB = substr($bigB,6,5);
     $subC = substr($bigB,10,5);
     $subD = substr($smallS,0,5);
     $subE = substr($smallS,6,5);
     $subF = substr($smallS,10,5);
     $subG = substr($numberS,0,5);
     $subH = substr($numberS,6,5);
     $subI = substr($numberS,10,5);
     $RandCode1 = str_shuffle($subA.$subD.$subB.$subF.$subC.$subE);
     $RandCode2 = str_shuffle($RandCode1);
     $RandCode = $RandCode1.$RandCode2;
     if ($len>$min_lenght && $len<$max_lenght)
     {
     $CodeEX = substr($RandCode,0,$len);
     }
     else
     {
     $CodeEX = $RandCode;
     }
     return $CodeEX;
    }

echo rand_code(10);
    ?>

以下是详细信息,Random code generator in PHP