HTTP请求编辑数据库

时间:2014-02-15 19:25:02

标签: php mysql http

我正在尝试使用MySQL数据库来验证用户是否从我的网站购买了一个程序。我不需要使用数据库,但这是我可以实现的最简单的方法(对于完成购买验证系统的不同方法的任何建议都非常感激。)

我目前的算法:

  1. 用户支付该程序(通过WooCommerce提供的各种支付网关之一)
  2. 服务器为用户提供一个唯一的随机十六进制字符串(该字符串也存储在数据库中,作为键/值对;字符串:0; 0表示未使用)
  3. 用户将字符串输入程序(必需),该程序将HTTP请求(包括字符串)发送到服务器。此请求告诉服务器在数据库中查找给定的字符串。如果找到,请将其值更改为1(已使用)。如果该值已经为1或无法找到该字符串,请将错误报告发送回给用户(程序将无效)。
  4. 如果一切正常,用户现在可以使用该程序。
  5. 我必须使用HTTP请求,因为只有服务器才能编辑数据库。我的网站使用共享托管,因此我无法直接修改任何本地用户的数据库。

    我以前从未使用过数据库,但我知道我必须使用INSERTCREATE TABLEUPDATESELECT命令。另外,我从未直接使用HTTP请求。

    HTTP请求应该如何,以及如何在服务器上处理它们?关于如何使用数据库的任何其他提示也将不胜感激。

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

1 个答案:

答案 0 :(得分: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'


?>

替换&lt; stringTableName&gt;用你的实际表名。 并对列也做同样的事情。 PS:此代码未经测试。并且请进行适当的验证等。此处未包含此内容。 让我知道这个是否奏效。