2011-11-16 82 views
1

我在我的网站上托管了一个MySql数据库,其表名为UsrLic 如果有人想购买我的软件,必须注册并输入他/她的生成机器密钥(+用户名,电子邮件等) 。如何让用户在线注册我的产品?

所以我的问题是:

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

或任何其他建议。

回答

5

我建议创建在PHP你的网站的API,并调用从德尔福的API。

这样一来,该数据库只适用于您的Web服务器而不是客户端应用程序,事实上,您应该在本地主机或私有IP上运行数据库,以便只有同一物理ical网络可以达到它。

我已经实现了这一点,并在我们说话时再次实现它。

PHP

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

创建一个名为register.php的文件。在这个文件中,把你的注册功能。从这个文件中,包含'register_config.php'。你将传递参数给你在这里创建的函数,他们将读取和写入你的数据库。

创建一个名为register_api.php的文件。从这个文件中,包含'register.php'。在这里,您将处理从客户端应用程序发送的POST或GET变量,调用register.php中的函数,并通过HTTP将结果返回给客户端。你将不得不研究连接和查询MySQL数据库。 W3Schools tutorials会让你很快做到这一点。

例如:

你的Delphi程序调用https://mysite/register_api.php早报(),并发送以下值:

name=Marcus 
[email protected] 

这里怎么register_api.php的开始可能看起来'S:

// 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函数通过HTTPS。 HTTPS提供端到端保护,因此没有人可以嗅探到从线路发送的数据。

只需联播一TIdSSLIOHandlerSocketOpenSSL组件添加到您TIdHTTP组件,你是好去,减去任何证书验证。

使用SSL组件的OnVerifyPeer事件来写自己的证书验证方法。这个很重要。如果您未验证服务器端证书,则其他站点可能会冒充DNS中毒,并从您的用户而不是您收集数据。虽然这很重要,但不要让这让你感到担忧,因为它需要更多的理解。在将来的版本中添加这个。

+1

或者不在PHP中,但是还是一个API。也许你可以在Delphi中构建一个web服务? – GolezTrol

+0

能否请你解释一下,或者只是一个小样本,这样我就可以得到一个如何操作 – randydom

+0

谢谢马库斯亚当斯,你可以给我一个样品! – randydom

2

为什么不使用例如分享它?他们还处理购买过程(我不明白你会怎么做自己..),并让你通过delphi应用程序创建一个注册码。