2014-02-15 52 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