2014-02-15 51 views
0

我想使用MySQL数据库来验证用户已从我的网站购买了一个程序。我不需要使用数据库,但这是我通过这种方式完成的最简单的方式(任何有关完成购买验证系统的不同方式的建议都非常感谢)。HTTP请求编辑数据库

我目前的算法:

  1. 用户支付程序(通过WooCommerce提供的各种支付网关之一)
  2. 用户提供由服务器的唯一的,随机的十六进制字符串(这个字符串也存储在数据库中,作为键/值对;字符串:0; 0表示未使用)
  3. 用户将字符串输入到程序(必需)中,该程序向服务器发送HTTP请求(包括字符串)。该请求告诉服务器在数据库中查找给定的字符串。如果找到它,将其值更改为1(使用)。如果该值已经为1或者找不到字符串,则向用户发送错误报告(程序不起作用)。
  4. 如果一切正常,用户现在可以使用该程序。

我必须使用HTTP请求,因为只有服务器可以编辑数据库。我的网站使用共享主机,所以我不能直接修改任何本地用户的数据库。

我从来没有与数据库工作过,但我知道我必须使用INSERTCREATE TABLEUPDATESELECT命令。另外,我从来没有直接处理HTTP请求。

HTTP请求应该是什么样子,以及如何在服务器上处理它们?如何操作数据库的任何其他技巧也将不胜感激。

注意:我可能会使用PHP(服务器端)和Python(客户端)。

回答

1

你的HTML看起来像这样

<html> 
<body> 

<form action="validate.php" method="post"> 
Name: <input type="text" name="name"><br> 
unique string: <input type="text" name="uniqueString"><br> 
<input type="submit"> 
</form> 

</body> 
</html> 

而在服务器端,您validate.php是这样的。

<?php 


    $name = $_POST["name"]; 
    $unqString = $_POST["uniqueString"]; 

//connect to your DB 
mysql_connect("your.hostaddress.com", "username", "password") or die(mysql_error()); 
mysql_select_db("Database_Name") or die(mysql_error()); 
$data = mysql_query("SELECT uniqueStringUsedFlag FROM <stringTableName> WHERE uniqueString='.$unqString.'") 
or die(mysql_error()); 

while($info = mysql_fetch_array($data)) { 
    if $info['uniqueStringUsedFlag']==1{ 
    return 'Error Message'; 
}else 
{ 

mysql_query("update <stringTableName> set uniqueStringUsedFlag =1 where uniqueString='.$unqString.'"); 

return 'Success'; 

} 
} 

//if the control comes here, it means the record was not found. 
return 'Error message' 


?> 

用您的实际表名替换< stringTableName>。 并且对列也做同样的事情。 PS:此代码未经测试。并请做适当的验证等。这里没有包括。 让我知道这是否工作。

+0

谢谢!我需要通过HTTP请求来获取验证字符串,因为必须从本地(从程序)输入字符串。我知道如何发送请求,而不是如何从PHP“访问”它。 –

+0

$ unqString = $ _POST [“uniqueString”];正在访问从服务器中的客户端发送的数据。当你说解压缩时,这就是你的意思吗? – Habrashat