Генерация случайных буквенно-цифровых кодов в PHP

Несколько примеров, как сгенерировать случайные последовательности численных и буквенных строк заданной длины и проверить их уникальность в базе данных MySQL.

function random_number($length = 6)
{
	$arr = array(
		'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'
	);

	$res = '';
	for ($i = 0; $i < $length; $i++) {
		$res .= $arr[random_int(0, count($arr) - 1)];
	}
	return $res;
}

echo random_number();
PHP

Примеры сгенерированных строк:

474704
997592
577201
780022
616607
166439
function random_number($length = 6)
{
	$arr = array(
		'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 
		'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
	);

	$res = '';
	for ($i = 0; $i < $length; $i++) {
		$res .= $arr[random_int(0, count($arr) - 1)];
	}
	return $res;
}

echo random_number();
PHP

Примеры сгенерированных строк:

YUKBJA
GYTMTQ
ENVPKD
KUNJSX
FSPKNY
TWWINR
function random_number($length = 6)
{
	$arr = array(
		'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 
		'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 
		'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'
	);

	$res = '';
	for ($i = 0; $i < $length; $i++) {
		$res .= $arr[random_int(0, count($arr) - 1)];
	}
	return $res;
}

echo random_number();
PHP

Примеры сгенерированных строк:

OKDX97
N8HLUS
GI5O4K
LF399C
UG20OR
WSDR81

Если сгенерированные коды должны быть уникальные, то перед записью в базу данных нужно сделать проверку с помощью цикла do while:

// Подключение к БД
$dbh = new PDO('mysql:dbname=db_name;host=localhost', 'логин', 'пароль');

do {
	// Генерируем код
	$number = random_number();
	
	// Проверяем в БД
	$sth = $dbh->prepare("SELECT * FROM `codes` WHERE `value` = ?");
	$sth->execute($number);
	$is_db = $sth->fetch(PDO::FETCH_ASSOC);

	if (!empty($is_db) {
		$cont = true;
	} else {
		$cont = false;
	}
} while ($cont === false);
	
// Сохранение уникального кода
$sth = $dbh->prepare("INSERT INTO `codes` SET `value` = ?");
$sth->execute($number);
PHP
08.02.2021, обновлено 04.12.2021
7751
Предыдущая запись Список серверов Whois
Следующая запись Курсоры в CSS

Комментарии

, чтобы добавить комментарий.

Другие публикации

Шифрование полей в MySQL
В MySQL есть несколько встроенных функций шифрования. Рассмотрим основные на примерах c использованием PHP PDO.
14160
0
Замена раскладки на PHP
PHP функции для исправление неправильной раскладки клавиатуры в тексте и использование их в поиске по сайту.
8272
+8
Загрузка файлов на сервер PHP
В статье приведен пример формы и php-скрипта для безопасной загрузки файлов на сервер, возможные ошибки и рекомендации при работе с данной темой.
56317
+20
Примеры использования PDO MySQL
В статье приведены основные примеры работы с расширением PHP PDO. Такие как подключение к БД, получение, изменение и...
82142
+2
Счетчик просмотров страниц с графиком
Для примера возьмем статейный сайт, на нём нужно сделать счетчик просмотров статей, с выводом результатов за день,...
13537
+18
Поиск похожих текстов в базе данных MySQL + PHP
Один из вариантов поиска похожих статей в базе данных основан на схождении слов в двух текстах.
4373
+4