我必须在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中是否是唯一的
答案 0 :(得分:1)
有关如何执行此操作的详细说明,请访问:PHP: How to generate a random, unique, alphanumeric string?
如果对应用程序的安全性至关重要,请参阅Scott的页面中的答案: https://stackoverflow.com/a/13733588/2224584