Команда Проекта
Был(a) в сети 3 часа назадКоманда Проекта
Был(a) в сети 9 часов назадНашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст, нажмите CTRL+Enter
Присоединяйтесь к нам в социальных сетях!
1. Переходим в ваш сайт.ру/phpmyadmin, создаем базу данных с любым именем, я создам new_db.
2. Создаем таблицу, я назову users, в ней 2 колонки у меня это: code, date. code - будет ключ клиента, date - дата окончания действия ключа.
Вот сразу код:
<!DOCTYPE html>
<head>
<title>Auth</title>
<meta charset="utf-8">
</head>
<body>
<?php
$mysqli = new mysqli("localhost", "123", "321", "new_db"); # 123 - user; 321- pass;
$mysqli->set_charset("utf8");
if ($mysqli->connect_errno){
$json_array = array("error" => 1, "message" => "Ошибка подключения к БД");
$json = json_encode($json_array, JSON_UNESCAPED_UNICODE);
exit($json);
}
else {
if (isset($_GET['code'])) {
$query = "SELECT * FROM `users` WHERE CODE=".$_GET['code'];
$sql = mysqli_query($mysqli,$query) or die(mysqli_error());
if (mysqli_num_rows($sql) > 0) {
$myrow = mysqli_fetch_array($sql);
$date = date_create($myrow['date']);
$curdate = date("d.m.Y");
if (strtotime($curdate) < strtotime(date_format($date, 'd.m.y')))
{
$interval = date_diff($date, date_create($curdate));
echo $interval->format("%d");
}
else
{
echo "The duration of the key has expired.";
}
}else{
echo '-1';
}
}
}
?>
</body>
Если ключ есть в бд и он не истек, выводим остаток дней, если истек, пишем:
"The duration of the key has expired."
Если ключа вообще нет, то пишем:
-1
<!DOCTYPE html>
<head>
<title>ADD KEY</title>
</head>
<body>
<?php
$mysqli = new mysqli("localhost", "123", "321", "new_db"); # 123 - user; 321- pass; new_db - base
$mysqli->set_charset("utf8");
if ($mysqli->connect_errno) {
$json_array = array("error" => 1, "message" => "Ошибка подключения к БД");
$json = json_encode($json_array, JSON_UNESCAPED_UNICODE);
exit($json);
} else {
echo('Успешное подключение!');
if (isset($_POST["code"])) {
if (!strcmp($_POST["pass"],"123456")){
$date = new DateTime('NOW');
$date->add(new DateInterval('P'.$_POST["days"].'D'));
$sql = "INSERT INTO `users` (`code`, `date`) VALUES ('".$_POST['code']."', '".$date->format('d.m.y')."' )";
$mysqli->query($sql);
if ($sql) {
echo "<p>Данные успешно добавлены в таблицу.</p>";
} else {
echo "<p>Произошла ошибка.</p>";
}
} else {
echo "<p>Неверный пароль.</p>";
}
}
}
?>
<table>
<form action="" method="post">
<tr>
<td>KEY:</td>
<td><input type="text" name="code"></td>
</tr>
<tr>
<td>DAYS:</td>
<td><input type="text" name="days"></td>
</tr>
<tr>
<td>PASSWORD:</td>
<td><input type="text" name="pass"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="OK"></td>
</tr>
</form>
</table>
</body>
Для работы потребуется библиотека lua requests
requests = require('requests')
function getserial()
local ffi = require("ffi")
ffi.cdef[[
int __stdcall GetVolumeInformationA(
const char* lpRootPathName,
char* lpVolumeNameBuffer,
uint32_t nVolumeNameSize,
uint32_t* lpVolumeSerialNumber,
uint32_t* lpMaximumComponentLength,
uint32_t* lpFileSystemFlags,
char* lpFileSystemNameBuffer,
uint32_t nFileSystemNameSize
);
]]
local serial = ffi.new("unsigned long[1]", 0)
ffi.C.GetVolumeInformationA(nil, nil, 0, serial, nil, nil, nil, 0)
return serial[0]
end
function main()
if not isSampfuncsLoaded() or not isSampLoaded() then return end
while not isSampAvailable() do wait(100) end
checkKey()
wait(-1)
end
function checkKey()
response = requests.get('сайт.ру/auth.php?code='..getserial())
if not response.text:match("<body>(.*)</body>"):find("-1") then -- Если ключ есть в бд
if not response.text:match("<body>(.*)</body>"):find("The duration of the key has expired.") then -- Если сервер не ответил что ключ истек.
sampAddChatMessage("До окончания лицензии осталось:"..response.text:match("<body>(.*)</body>"), -1) -- Выводим кол-во дней до конца лицензии
else
sampAddChatMessage(response.text:match("Срок действия лицензии истек."), -1)
end
else
sampAddChatMessage("Ключ не активирован.", -1)
end
end
Да и вообщем все.
В lua использовалась функция от
Нет комментариев.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.