私は現在、ユーザーがランダム コードを受け取り、それを使用してダウンロード用の mp3 にアクセスし、最大 3 回ダウンロードできるダウンロード プラットフォームの構築に取り組んでいます。Python を使用してランダム コードのリストを生成し、関連付けられた電子メール アドレス用の空の列と使用回数用の既定の 0 を持つ SQL テーブルにそれらをインポートしました。メールを特定のコードに関連付けてカウントを追加し、ダウンロードに最大 3 回アクセスできるようにするために、次の PHP スクリプトを作成しました。
$email = $_POST["email"];
$email = stripslashes($email);
$uniqueCode = $_POST["uniqueCode"];
$uniqueCode = stripslashes($uniqueCode);
// check that all fields are filled
if($uniqueCode=="" || $email=="")
apologize("Please fill out all fields.");
// check to make sure that the e-mail is valid
if (verifyEmail($email) == FALSE)
apologize("Please enter a valid e-mail address.");
// check if uniqueCode input is alphanumeric
if (verifyCode($uniqueCode) == FALSE)
apologize("Download codes are alphanumeric.");
// check to see if unique code is correct
$sql = mysql_query("SELECT * FROM wd009 where uniqueCode='$uniqueCode'");
$result = mysql_fetch_array($sql);
if($sql==FALSE)
{
apologize("Your download code is invalid. Please try again");
}
// only allow users with less than 3 downloads to proceed
else if ($result['count'] <= 3) {
if ($result['email'] == ""){
mysql_query("UPDATE wd009 SET email='$email', count=1 WHERE uniqueCode='$uniqueCode'");
apologize("added email");
}
else if ($result['email'] != $email)
apologize("different email from record!!");
else if ($result['email'] == $email){
mysql_query("UPDATE wd009 SET count=count+1 WHERE uniqueCode='$uniqueCode'");
apologize("updated the count!");
}
else
apologize("Your download code is used up!");
明らかに、コードに含まれていない上記の関数をいくつか使用していますが、それらすべてをチェックしましたが、MySQL クエリに干渉するものはありません。謝罪の直後に、謝罪()が終了することに注意してください。フォームに正しいコードを入力すると、正しく機能し、SQL データベースが更新されます。ただし、ダウンロード コードの入力が英数字である限り、文字列が表のいずれとも一致しない場合でも、フォームはそれを受け入れます。つまり、mysql_query は入力に関係なくリソースを返します。データベース接続を確認しましたが、ダウンロードコードが正しければテーブルが正しく更新されるので問題ないようです。
私は考えられるあらゆる方法でこれをデバッグしようとしましたが、本当に困惑しています。あなたが提供できるどんな助けも大歓迎です!