Важно!!!, то что тут написано это я всё сам делал, я всё сам выдумал, и активационные ключи я тоже сам придумал случайные!
В колледже это был мой проект, было типа лабараторной работой, или практики
В Алматы мы использовали Российские ключи защиты (dongle) Guardant:
Так выглядят западные ключи защиты (dongle):
В колледже был проект "программа активации". Итак вот простой пример, консольное приложение :
Файл Main.cs:
using System;
using System.IO;
using System.Text;
using System.Net;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try {
WebClient wcl = new WebClient();
Console.WriteLine("Your name:");
String strName = Console.ReadLine();
Console.WriteLine("Your email:");
String strEmail = Console.ReadLine();
Console.WriteLine("Activation key:");
String strKey = Console.ReadLine();
String strResult = wcl.DownloadString(String.Format("http://localhost/activation/activate.php?key={0}&name={1}&email={2}", strKey, strName, strEmail));
Console.WriteLine(strResult);
Console.WriteLine("Press any key...");
Console.ReadKey();
}
catch(Exception ex) {
Console.WriteLine(String.Format("Error: {0}", ex.Message));
}
}
}
}
Это SQL:
-- phpMyAdmin SQL Dump -- version 5.0.1 -- https://www.phpmyadmin.net/ -- -- Хост: 127.0.0.1 -- Время создания: Дек 05 2021 г., 07:33 -- Версия сервера: 10.4.11-MariaDB -- Версия PHP: 7.4.2 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- База данных: `activation` -- -- -------------------------------------------------------- -- -- Структура таблицы `activate_software` -- CREATE TABLE `activate_software` ( `activation_id` bigint(20) NOT NULL, `name` varchar(255) DEFAULT NULL, `date` datetime DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `code` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -- Индексы сохранённых таблиц -- -- -- Индексы таблицы `activate_software` -- ALTER TABLE `activate_software` ADD PRIMARY KEY (`activation_id`); -- -- AUTO_INCREMENT для сохранённых таблиц -- -- -- AUTO_INCREMENT для таблицы `activate_software` -- ALTER TABLE `activate_software` MODIFY `activation_id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Это код PHP index.php:
<?php
$pdo = new PDO('mysql:host=localhost;dbname=activation', 'root', '');
if(is_null($_GET['email']) || !isset($_GET['email']))
exit;
if(is_null($_GET['name']) || !isset($_GET['name']))
exit;
if(is_null($_GET['key']) || !isset($_GET['key']))
exit;
$str_email = $_GET['email'];
$str_name = $_GET['name'];
$str_key = $_GET['key'];
$str_date = date('Y-m-d H:i:s', mktime());
$pdo->prepare('UPDATE `activate_software` SET `name`=?, `date`=?, `email`=? WHERE `activate_software`.`code`=?')->execute([$str_name, $str_date, $str_email, $str_key]);
echo $str_name . "\n";
echo $str_date . "\n";
echo $str_email . "\n";
echo $str_key . "\n";
?>Результат:
Это так выглядет сама таблица:
Это ввод данных, и активация:
Это результат активации (имя - Anton Popov, e-mail - anton.popov.82@example.com, итд.):


