如何在PHP中生成一个独特的随机代码并将其保存在MySQL中?

时间:2016-02-18 15:14:22

标签: php mysql

我必须在PHP中生成一个随机代码并将其保存在MySQL中,但这段代码必须是唯一的,我是.php的新手,我知道这不是人们只是要求做事的地方。我承诺这是我第一次也是最后一次在这里要求做的事情,我将研究和理解这些代码。非常感谢你。

我明白了:

    <?php
function crypto_rand_secure($min, $max)
{
$range = $max - $min;
if ($range < 1) return $min; // not so random...
$log = ceil(log($range, 2));
$bytes = (int) ($log / 8) + 1; // length in bytes
$bits = (int) $log + 1; // length in bits
$filter = (int) (1 << $bits) - 1; // set all lower bits to 1
do {
    $rnd = hexdec(bin2hex(openssl_random_pseudo_bytes($bytes)));
    $rnd = $rnd & $filter; // discard irrelevant bits
} while ($rnd >= $range);
return $min + $rnd;
}

function getToken($length)
{
    $token = "";
    $codeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $codeAlphabet.= "abcdefghijklmnopqrstuvwxyz";
    $codeAlphabet.= "0123456789";
    $max = strlen($codeAlphabet) - 1;
    for ($i=0; $i < $length; $i++) {
        $token .= $codeAlphabet[crypto_rand_secure(0, $max)];
    }
    return $token;
}

但我不知道如何在保存到表格之前检查该代码在Mysql中是否是唯一的

1 个答案:

答案 0 :(得分:1)

有关如何执行此操作的详细说明,请访问:PHP: How to generate a random, unique, alphanumeric string?

如果对应用程序的安全性至关重要,请参阅Scott的页面中的答案: https://stackoverflow.com/a/13733588/2224584