-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
В данном гайде будет приведен самый простой пример авторизации с помощью логина и пароля от аккаунта без привязки к HWID.
Весь материал из гайда можно расширять в любых направлениях, в каких позволяет ваша фантазия
Для создания многопользовательской авторизации понадобится:
После того как мы создали свою базу данных, нам нужно настроить таблицу базы данных ( на данном скриншоте users - это таблица, у вас будет чисто, нажмите на "Новая" что-бы создать новую таблицу в базе данных )
Поскольку авторизация будет включать в себя только логин и пароль от аккаунта, нам нужно создать два столбца, назовем их соответственно login и password
Вы можете сами ознакомиться с определением типа VARCHAR, дабы я здесь не расписывал это.
Длину нашего логина и пароля поставим в 32 символа для примера ( вы можете использовать любую длину строки )
Остальные параметры нам не особо важны, если у вас есть желание, вы можете ознакомиться с ними сами
Далее нажимаем кнопку "Сохранить" справа внизу ( не забываем назвать нашу таблицу сверху в поле "Имя таблицы", я назову test ).
Подключаемся к нашей базе данных:
Из-за того что наш php скрипт будет лежать на том же хостинге, где хранится наша база данных, в подключении мы используем локальный IP адрес.
Наш скрипт будет принимать данные с помощью GET запросов от клиента ( проекта C++ ) по этому создадим сразу три переменные, которые будут заполняться GET-запросом:
[/SIZE]
Переменная $api служит направляющей переменной нашего скрипта ( для того что бы обращаться к определенному блоку, давайте будем думать что блок 0 - регистрация, блок 1 - авторизация )
Далее создадим новую переменную - $sql_query, она будет содержать статус нашего запроса для базы данных.
Сразу же напишем первый запрос: добавление логина и пароля в базу данных ( т.е регистрация, блок 0 )
Мы можем проверить правильность написанного кода, ведь GET-запрос это просто правильно сформированная ссылка.
Давайте выведем success если наш блок кода отработал:
После запроса c помощью GET метода, мы увидим, что в нашей базе данных заполнились поля login и password с нашими данными Arkting Piere
Далее напишем авторизацию, по факту это просто проверка наличия данных в нашей таблице ( пишем в блоке 1 )
Проверка $sql_query->num_rows != 0 означает, что SELECT смог найти хотя бы 1 строку наших GET данных, означая, что пользователь зарегистрирован. Он выбирает поле login где password равен введенному паролю.
Переменная $api_response хранит в себе обычный ответ от скрипта.
Как же теперь это связать с проектом C++? Приступим.
Далее дело за малым, считать информацию после нашего GET запроса с помощью выше написанной функции. Приступим.
В нашей базе данных уже хранится логин: Arkting пароль: Piere, давайте напишем авторизацию для этих данных.
Теперь если мы введем верные данные, в консоли выведет Success auth!
Далее дело за вами, развивайте данный код как только можно.
Удачи!
Весь материал из гайда можно расширять в любых направлениях, в каких позволяет ваша фантазия
Для создания многопользовательской авторизации понадобится:
- Интернет-хостинг ( в моем случае это http://beget.com/ )
- База данных MySQL ( берем из хостинга )
- Проект C++
I. Настраиваем базу данных MySQL
Не буду здесь расписывать абсолютно все моменты ( оплата хостинга / создание базы данных ) это уже слишком, не хочу лить воду в этом гайде, перейдем к настройке.После того как мы создали свою базу данных, нам нужно настроить таблицу базы данных ( на данном скриншоте users - это таблица, у вас будет чисто, нажмите на "Новая" что-бы создать новую таблицу в базе данных )
Поскольку авторизация будет включать в себя только логин и пароль от аккаунта, нам нужно создать два столбца, назовем их соответственно login и password
Вы можете сами ознакомиться с определением типа VARCHAR, дабы я здесь не расписывал это.
Длину нашего логина и пароля поставим в 32 символа для примера ( вы можете использовать любую длину строки )
Остальные параметры нам не особо важны, если у вас есть желание, вы можете ознакомиться с ними сами
Далее нажимаем кнопку "Сохранить" справа внизу ( не забываем назвать нашу таблицу сверху в поле "Имя таблицы", я назову test ).
II. Пишем PHP скрипт для работы с базой данных
Создаем файл index.php ( в нем мы будем писать всю логику скрипта для работы с MySQL таблицей )Подключаемся к нашей базе данных:
PHP:
<?php
$mysqli = new mysqli('127.0.0.1', 'Имя базы данных', 'Пароль от базы данных', 'Имя базы данных повторно');
?>
Наш скрипт будет принимать данные с помощью GET запросов от клиента ( проекта C++ ) по этому создадим сразу три переменные, которые будут заполняться GET-запросом:
PHP:
<?php
$login = $_GET['login'];
$password = $_GET['password'];
$api = $_GET['api'];
$mysqli = new mysqli('127.0.0.1', 'Имя базы данных', 'Пароль от базы данных', 'Имя базы данных повторно');
[SIZE=5]?>
Переменная $api служит направляющей переменной нашего скрипта ( для того что бы обращаться к определенному блоку, давайте будем думать что блок 0 - регистрация, блок 1 - авторизация )
Далее создадим новую переменную - $sql_query, она будет содержать статус нашего запроса для базы данных.
Сразу же напишем первый запрос: добавление логина и пароля в базу данных ( т.е регистрация, блок 0 )
PHP:
<?php
$login = $_GET['login'];
$password = $_GET['password'];
$api = $_GET['api'];
$mysqli = new mysqli('127.0.0.1', 'Имя базы данных', 'Пароль от базы данных', 'Имя базы данных повторно');
switch($api)
{
case 0:
$sql_query = $mysqli->query( "INSERT INTO `test`(`login`, `password`) VALUES ('$login', '$password')" );
break;
}
?>
Давайте выведем success если наш блок кода отработал:
PHP:
<?php
$login = $_GET['login'];
$password = $_GET['password'];
$api = $_GET['api'];
$mysqli = new mysqli('127.0.0.1', 'Имя базы данных', 'Пароль от базы данных', 'Имя базы данных повторно');
switch($api)
{
case 0:
$sql_query = $mysqli->query( "INSERT INTO `test`(`login`, `password`) VALUES ('$login', '$password')" );
print("success!");
break;
}
?>
После запроса c помощью GET метода, мы увидим, что в нашей базе данных заполнились поля login и password с нашими данными Arkting Piere
Далее напишем авторизацию, по факту это просто проверка наличия данных в нашей таблице ( пишем в блоке 1 )
PHP:
<?php
$login = $_GET['login'];
$password = $_GET['password'];
$api = $_GET['api'];
$mysqli = new mysqli('127.0.0.1', 'Имя базы данных', 'Пароль от базы данных', 'Имя базы данных повторно');
switch($api)
{
case 0:
$sql_query = $mysqli->query( "INSERT INTO `test`(`login`, `password`) VALUES ('$login', '$password')" );
$api_response = "Success registration!";
break;
case 1:
$sql_query = $mysqli->query( "SELECT `login` FROM `test` WHERE `password` = '$password'" );
if ( $sql_query->num_rows != 0 )
{
$api_response = "Success auth!";
break;
}
break;
}
print($api_response);
?>
Переменная $api_response хранит в себе обычный ответ от скрипта.
Как же теперь это связать с проектом C++? Приступим.
III. Пишем клиент на C++
Для чтения ответа от php скрипта мы воспользуемся таким методом:
C++:
std::string CreateUrlRequest(std::string url) {
std::string request_data = "";
HINTERNET open = InternetOpenA(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (!open)
return request_data;
HINTERNET http_session = InternetConnectA(open, "Ваш URL адрес хостинга", INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, NULL);
if (!http_session) {
InternetCloseHandle(open);
return request_data;
}
HINTERNET http_request = HttpOpenRequestA(http_session, "GET", url.c_str(), NULL, NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_RELOAD, 0);
if (!http_request) {
InternetCloseHandle(open);
InternetCloseHandle(http_session);
return request_data;
}
char request[0x1000] = { 0 };
std::string headers = "Content-Type: text/html\r\nUser-Agent: license";
if (!HttpSendRequestA(http_request, headers.c_str(), headers.size(), request, url.size())) {
InternetCloseHandle(open);
InternetCloseHandle(http_session);
InternetCloseHandle(http_request);
return request_data;
}
char buffer[0x1000] = { 0 };
DWORD read = 0;
while (InternetReadFile(http_request, buffer, sizeof buffer - 1, &read) && read)
request_data.append(buffer, read);
InternetCloseHandle(open);
InternetCloseHandle(http_session);
InternetCloseHandle(http_request);
return request_data;
}
В нашей базе данных уже хранится логин: Arkting пароль: Piere, давайте напишем авторизацию для этих данных.
C++:
int main()
{
std::string login, password, response;
std::cout << "Введите ваш логин: ";
std::cin >> login;
std::cout << "Введите ваш пароль: ";
std::cin >> password;
response = CreateUrlRequest( "/index.php?api=1&login=" + std::string( login ) + "&password=" + std::string( password ) );
printf( "%s\n", response );
}
Далее дело за вами, развивайте данный код как только можно.
Удачи!
Последнее редактирование модератором: