Генериране на код

dan4o

Registered
Търся някакъв скрипт който да генерира код с цифри и букви до 8 символа
и да е уникален да не се повтарят , ако трябва да проверява в BD :P дали го има :P
 
Код:
function code()
{
$rand = rand(0,20);
$code = substr(md5(time()),$rand,$rand+8);
$num = mysql_num_rows(mysql_query("SELECT * FROM table WHERE code='$code'"));
if($num != 0)
{
code();
}
else
{
echo "Tuk si updeitva6 db-to s \$code.";
exit;
}
}


code();


Рекурсивно ще се извиква функцията code,докато ъпдейтне дб-то с $code.


Може да има грешки,не съм го тествал.. :)
 
Така ще започнем от структурата на базата данни.
Тя е една таблица с едно поле, в което ще се записват създадените до момента кодове.

Така ето я:
Код:
CREATE TABLE `codes` (
`code` varchar(250) NOT NULL default ''
);


Ето и самия скрипт за генериране на уникален код.
Код:
<?php
// CONFIG //

// Връзка с базата данни
$db_conn = mysql_connect("localhost", "root", "password") or die(mysql_error());
mysql_select_db("database", $db_conn) or die(mysql_error());

define(COUNT_SIMBOLS,8); // тук дефинираме колко символа да бъде кода
define(ALL_SIMBOLS,'0123456789qwertyuioplkjhgfdsazxcvbnm'); // тук слагаме символите, от които да се генерира кода

// CONFIG //

$code = substr(str_shuffle(ALL_SIMBOLS),0,COUNT_SIMBOLS);
$continue = false;
while (!$continue) {
$query = mysql_query("SELECT `code` FROM `codes` WHERE `code` = '$code'"); // проверяваме за кода в базата данни за да сме сигурни, че кода ще бъде напълно уникален :)
if (mysql_num_rows($query) == 0) { // проверяваме дали вече има такъв код, ако няма продължаваме
mysql_query("INSERT INTO `codes` (`code`) VALUES ('$code')"); // добавяме кода в базата данни за да сме сигурни, че няма да бъде повторен
$continue = true;
} else {
$code = substr(str_shuffle(ALL_SIMBOLS),0,COUNT_SIMBOLS); // тук генерираме нов код, ако предишния генериран е съществувал в базата
$continue = false;
}
}

// връшаме променливата "$code" с уникалния код. Вече може да я правите каквото поискате ;)
echo $code;
?>
 

Back
Горе