Важно!!!, то что тут написано это я всё сам делал, я всё сам выдумал, и активационные ключи я тоже сам придумал случайные!
В колледже это был мой проект, было типа лабараторной работой, или практики
В Алматы мы использовали Российские ключи защиты (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, итд.):