У меня есть скрипт php, который создает случайный токен (A-Z, a-z, 0-9):
function token($length) {
$characters = array(
"A","B","C","D","E","F","G","H","J","K","L","M",
"N","P","Q","R","S","T","U","V","W","X","Y","Z",
"a","b","c","d","e","f","g","h","i","j","k","m",
"n","o","p","q","r","s","t","u","v","w","x","y","z",
"1","2","3","4","5","6","7","8","9");
//make an "empty container" or array for our keys
$keys = array();
//first count of $keys is empty so "1", remaining count is 1-6 = total 7 times
while(count($keys) < $length) {
//"0" because we use this to FIND ARRAY KEYS which has a 0 value
//"-1" because were only concerned of number of keys which is 32 not 33
//count($characters) = 33
$x = mt_rand(0, count($characters)-1);
if(!in_array($x, $keys)) {
$keys[] = $x;
}
}
foreach($keys as $key){
$random .= $characters[$key];
}
return $random;
}
Работает отлично, но я хочу иметь возможность проверить определенную базу данных, чтобы убедиться, что этот токен никогда не использовался ранее. И если он есть, он мгновенно воссоздает новый токен перед выводом.
Я знаю, что могу использовать этот скрипт для проверки дубликата:
$check = mysqli_query($mysqli, "SELECT ".$table.".token FROM ".$table." WHERE ".$table.".token = '".$random."'");
if(mysqli_num_rows($check) > 0){
//ERROR: DUPLICATE TOKEN, CREATE A NEW TOKEN NOW...
}
Мне просто нужна помощь, чтобы сложить все вместе, чтобы в случае обнаружения дубликата в базе данных он возвращался назад и пытался снова.