我目前正在构建一个下载平台,在该平台中,用户会收到一个随机代码并使用它来访问一个 mp3 以供下载最多三个下载。我使用 Python 生成了一个随机代码列表,并将它们导入到一个 SQL 表中,其中一个空列用于关联的电子邮件地址,默认值为 0 用于使用计数。我编写了以下 PHP 脚本,以便将电子邮件与特定代码相关联并添加到计数中,以便最多可以访问 3 次下载。
$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 查询。可能需要注意的是,apologize() 在道歉后立即退出。当我在表单中输入正确的代码时,它可以正常工作并更新 SQL 数据库。但是,只要下载代码输入是字母数字,即使该字符串肯定与表中的任何字符串都不匹配,表单也会接受它。即,无论输入如何,mysql_query 都会返回一个资源。我检查了数据库连接,但由于下载代码正确时表已正确更新,这似乎不是问题。
我已经尝试过以我能想到的所有方式进行调试,并且真的很困惑。您能提供的任何帮助将不胜感激!