Как я могу позволить пользователям регистрировать мой продукт онлайн? - PullRequest
1 голос
/ 16 ноября 2011

У меня есть база данных MySql, размещенная на моем веб-сайте, с таблицей с именем UsrLic . Если кто-то хочет купить мое программное обеспечение, он должен зарегистрироваться и ввести свой сгенерированный ключ компьютера (+ имя пользователя, адрес электронной почты...etc).

Итак, мой вопрос:

Я хочу автоматизировать этот процесс из моего программного обеспечения, каким будет этот процесс?Должен ли я подключаться и обновлять свою базу данных непосредственно из моего программного обеспечения (а это значит, что я должен сохранить в нем все параметры подключения к моей базе данных * имя пользователя, пароль, сервер * моей базы данных, а затем использовать ADO или MyDac для подключения к этой базе данных? И если да, то какБезопасен ли этот процесс?

или любые другие предложения.

Ответы [ 2 ]

5 голосов
/ 16 ноября 2011

Я рекомендую создать API на вашем веб-сайте на PHP и вызывать API из Delphi.

Таким образом, база данных доступна только вашему веб-серверу, а не клиентскому приложению. Фактически вы должны запустить свою базу данных на локальном хосте или с частным IP-адресом, чтобы к ней могли обращаться только машины в одной физической сети.

Я реализовал это и внедряю снова, как мы говорим.

PHP

Создайте новый файл с именем register_config.php. В этом файле настройте информацию о соединении MySQL.

Создайте файл с именем register.php. В этом файле поместите ваши регистрационные функции. Из этого файла включите «register_config.php». Вы передадите параметры созданным здесь функциям, и они будут выполнять чтение и запись в вашу базу данных.

Создайте файл с именем register_api.php. Из этого файла включите «register.php». Здесь вы будете обрабатывать переменные POST или GET, которые отправляются из вашего клиентского приложения, вызывать функции в register.php и возвращать результаты обратно клиенту, все через HTTP.

Вам придется исследовать подключение к базе данных MySQL и запрос к ней. В учебниках W3Schools вы сделаете это очень быстро.

Например:

Ваша Delphi-программа вызывает https://mysite/register_api.php с помощью Post () и отправляет следующие значения:

name=Marcus
email=marcus@gmail.com

Вот как может выглядеть начало register_api.php:

// Our actual database and registration functions are in this library
include 'register.php';

// These are the name value pairs sent via POST from the client
$name = $_POST['name'];
$email = $_POST['email'];

// Sanitize and validate the input here...

// Register them in the DB by calling my function in register.php
if registerBuyer($name, $email) {
  // Let them know we succeeded
  echo "OK";
} else {
  // Let them know we failed
  echo "ERROR";
}

Delphi

Используйте компонент Indy TIdHTTP и его метод Post () или Get () для публикации данных в register_api.php на веб-сайте.

Вы получите ответ в тексте от вашего API.

Будьте проще.

Безопасность

Все проверки должны выполняться на сервере (API). Сервер должен быть привратником.

Очистите все входные данные API от пользователя (клиента) перед вызовом каких-либо функций, особенно запросов.

Если вы используете общий веб-хостинг, убедитесь, что register.php и register_config.php не доступны для чтения во всем мире.

Если вы передаете конфиденциальную информацию, и она звучит так, как вы, вам следует вызвать функцию регистрации API из Delphi через HTTPS. HTTPS обеспечивает сквозную защиту, так что никто не может прослушивать данные, передаваемые по проводам.

Просто подключите компонент TIdSSLIOHandlerSocketOpenSSL к вашему компоненту TIdHTTP, и все готово, за исключением проверки сертификата.

Используйте событие OnVerifyPeer компонента SSL, чтобы написать собственный метод проверки сертификата. Это важно. Если вы не подтвердите сертификат на стороне сервера, другие сайты могут выдавать себя за отравление DNS и собирать данные от ваших пользователей, а не от вас. Хотя это важно, не позволяйте этому удерживать вас, так как это требует немного большего понимания. Добавьте это в будущей версии.

2 голосов
/ 16 ноября 2011

Почему бы вам не использовать, например, поделиться * это?Они также управляют процессом покупки (я не понимаю, как бы вы сделали это для себя ...) и позволяют вам создать ключ reg через приложение delphi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...