Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何让用户在线注册我的产品?_Mysql_Delphi_Registration - Fatal编程技术网

Mysql 如何让用户在线注册我的产品?

Mysql 如何让用户在线注册我的产品?,mysql,delphi,registration,Mysql,Delphi,Registration,我的网站上有一个MySql数据库,其中有一个表名为UsrLic 如果任何人想要购买我的软件,必须注册并输入他/她生成的机器密钥(+用户名、电子邮件…等) 所以我的问题是: 我想从我的软件中自动化这个过程,这个过程将是怎样的? 我是否应该直接从我的软件连接和更新我的数据库(这意味着我必须在其中保存所有数据库连接参数*我的数据库用户名、密码、服务器*,然后使用ADO或MyDac连接到此数据库?如果是,此过程的安全性如何 或任何其他建议。我建议在您的网站上用PHP创建一个API,并从Delphi调用该

我的网站上有一个MySql数据库,其中有一个表名为UsrLic 如果任何人想要购买我的软件,必须注册并输入他/她生成的机器密钥(+用户名、电子邮件…等)

所以我的问题是:

我想从我的软件中自动化这个过程,这个过程将是怎样的? 我是否应该直接从我的软件连接和更新我的数据库(这意味着我必须在其中保存所有数据库连接参数*我的数据库用户名、密码、服务器*,然后使用ADO或MyDac连接到此数据库?如果是,此过程的安全性如何


或任何其他建议。

我建议在您的网站上用PHP创建一个API,并从Delphi调用该API

这样,数据库只对web服务器可用,而对客户端应用程序不可用。事实上,您应该在本地主机上或使用专用IP运行数据库,以便只有同一物理网络上的计算机才能访问它

我已经实施了这一点,并且在我们发言时再次实施

PHP

创建一个名为register_config.php的新文件。在此文件中,设置MySQL连接信息

创建一个名为register.php的文件。在此文件中,放置注册函数。在此文件中,包括“register_config.php”。您将向此处创建的函数传递参数,它们将对数据库进行读写操作

创建一个名为register_api.php的文件。从这个文件中,包括“register.php”。在这里,您将处理POST或获取从客户端应用程序发送的变量,调用register.php中的函数,并通过HTTP将结果返回给客户端

你必须研究连接和查询一个MySQL数据库的方法,这个方法会让你很快做到这一点

例如:

Delphi程序使用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()方法将数据发布到网站上的注册_api.php

您将从API中以文本形式返回响应

保持简单

安全性

所有验证都应该在服务器(API)上完成。服务器必须是网关守护者

在调用任何函数(尤其是查询)之前,请清理用户(客户端)对API的所有输入

如果您使用的是共享web主机,请确保register.php和register_config.php不是世界可读的

如果您正在传递敏感信息,而且听起来像是这样,那么您应该通过HTTPS从Delphi调用注册API函数。HTTPS提供端到端保护,因此任何人都无法嗅探从网络发送的数据

只需将一个TidsLioHandlerSocketOpenSSL组件连接到您的TIdHTTP组件,就可以了,不需要任何证书验证


使用SSL组件的OnVerifyPeer事件编写您自己的证书验证方法。这一点很重要。如果您不验证服务器端证书,其他站点可以用DNS中毒模拟您,并从您的用户而不是您那里收集数据。尽管这一点很重要,但不要因此而耽误您,因为这需要一点时间e理解。在将来的版本中添加此内容。

我建议在您的网站上使用PHP创建一个API,并从Delphi调用该API

这样,数据库只对web服务器可用,而对客户端应用程序不可用。事实上,您应该在本地主机上或使用专用IP运行数据库,以便只有同一物理网络上的计算机才能访问它

我已经实施了这一点,并且在我们发言时再次实施

PHP

创建一个名为register_config.php的新文件。在此文件中,设置MySQL连接信息

创建一个名为register.php的文件。在此文件中,放置注册函数。在此文件中,包括“register_config.php”。您将向此处创建的函数传递参数,它们将对数据库进行读写操作

创建一个名为register_api.php的文件。从这个文件中,包括“register.php”。在这里,您将处理POST或获取从客户端应用程序发送的变量,调用register.php中的函数,并通过HTTP将结果返回给客户端

你必须研究连接和查询一个MySQL数据库的方法,这个方法会让你很快做到这一点

例如:

Delphi程序使用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()方法将数据发布到网站上的注册_api.php

您将从API中以文本形式返回响应

保持简单

安全性

所有验证都应该在服务器(API)上完成。服务器必须是网关守护者

在调用任何函数(尤其是查询)之前,请清理用户(客户端)对API的所有输入

如果您使用的是共享web主机,请确保register.php和register_config.php不是世界可读的

如果您正在传递敏感信息,而且听起来像是这样,那么您应该通过HTTPS从Delphi调用注册API函数。HTTPS提供端到端保护,因此任何人都无法嗅探从网络发送的数据

只需将一个TidsLioHandlerSocketOpenSSL组件连接到您的TIdHTTP组件,就可以了,不需要任何证书验证

使用SSL组件的OnVerifyPeer事件编写您自己的证书验证方法。这一点很重要。如果您不验证服务器端证书,其他站点可以使用DNS中毒模拟您,并从您的用户而不是您那里收集数据