Добрый день.
Сегодня я расскажу как сделать генератор ключей для вашего онлайн-приложения.
Принцип работы
Генератор:
Вход: name
Выход: key
Тестер:
Вход Имя и ключ
Выход: true / false / error
Генератор кода генерирует ключ алгоритмом, который я напишу ниже, а тестер, как положено, делает все задом-наперед и смотрит что получилось.
По сути, это очень-очень соленый md5.
Generator.php
<? php
if($_POST['NAME_IN']!='') {
$name_md5=md5($_POST['NAME_IN'].md5($_POST['NAME_IN'].md5('i_love_music'))); // Получаем md5 от имени
$ser=$name_md5[1].$name_md5[3].$name_md5[5].$name_md5[2].$name_md5[0]; // Выбираем некоторые символы md5 имени.
$reg=$ser.md5(md5($ser).md5(md5($ser).md5($ser).md5('i_am_david'))); // Генерируем ключ
echo $reg; // Выводит ключ
}
?>
«i_love_music» и «i_am_david» — обычное слово, пишите которое хотите, если его поменять, то ключи будут другими даже с теми же именами.
Если нужно делать временные ключи, можно добавить
$d=getdate();
, а вместо слова
$d[mday]
tester.php
<? php
function test () {
$str=$_POST['KEY_TEST']; // Получаете строку для теста
$ser=$str[0].$str[1].$str[2].$str[3].$str[4]; // Первые 5 символов ключа
$hesh=substr($str, 5); // Остальные
$name_md5=md5($_POST['NAME_TEST'].md5($_POST['NAME_TEST'].md5('i_love_music'))); // Md5 имени
$ser2=$name_md5[1].$name_md5[3].$name_md5[5].$name_md5[2].$name_md5[0]; // Получаете те же 5 первых символов. Имеет вйты то именно что в $ ser
$mdfive=md5(md5($ser).md5(md5($ser).md5($ser).md5('i_am_david'))); // А теперь генерирует md5-остальные.
if ($_POST['KEY_TEST']!='' and $_POST['NAME_TEST']!='') {
if ($mdfive == $hesh AND $ser2 == $ser) // Если md5-остальные = данной остальных и "те же 5 первых символов" уровне
{return 'TRUE';} // Пишем TRUE
else {return 'FALSE';} // Или FALSE, если нет
} else {return 'ERROR: Field is empty';} // Если поля пустые, то так и пишем
}
echo test (); // Выводим результат теста
?>
Кстати, оказывается в php первый символ под номером 0.
Ну и форма для генератора:
index.php
<fieldset style = "width: 90%;">
<legend> Get key </ legend>
<form method = "post">
NAME: <input type = "text" value = "<?Php echo $_POST['NAME_IN'];?>" Name = "NAME_IN" size = "50">
KEY <input type = "text" value = "<?Php include" generator.php "?>" Size = "50">
<button type = "submit"> SUBMIT </ button>
</ form>
</ fieldset>
<fieldset style = "width: 90%;">
<legend> Test key </ legend>
<form method = "post">
NAME: <input type = "text" name = "NAME_TEST" value = "<?Php echo $_POST['NAME_TEST'];?>" Size = "50">
KEY <input type = "text" name = "KEY_TEST" value = "<?Php echo $_POST['KEY_TEST'];?>" Size = "50">
<button type = "submit"> SUBMIT </ button>
<?php include "tester.php"; ?>
</ form>
</ fieldset>
Ключ на имя «habr» будет «ae70ed9ee93f2e2314007d6c23c799d71d2c8».
Вот ссылка на демку: http://blastorq.url.ph/keygen-php/