【发布时间】:2018-08-21 08:57:17
【问题描述】:
我正在构建一个网站,该网站根据用户可以选择输入的促销代码提供折扣。在处理新注册之前,我有必要验证代码是否存在于我们的数据库中。这是我用于验证的 AJAX 调用:
if (promo_code) {
var returned = true;
$.ajax({
type: "POST",
url: "/ajax/validate_promo_code.php",
data: {promo_code: promo_code},
success: function(result) {
if (result == 0) {
$('#blank_dialog_popup').html('<span class="message_text_big">Sorry, that promo code is not valid.</span>').addClass('message_warning').css('display', 'block').css('z-index', '1003');
setTimeout(returnMessageBackground, 3000);
$('#promo_code').focus();
returned = false;
}
}
});
if (returned != true) {
return false;
}
}
这是我用于验证的整个 PHP 文件。
<?php
//ini_set('display_errors',1);
//error_reporting(E_ALL|E_STRICT);
$db = new Database();
$promo_code = filter_var(intval($_POST['promo_code']), FILTER_VALIDATE_STRING);
$check_query = "SELECT id FROM users WHERE promo_code = '$promo_code'";
$db->query($check_query);
if ($db->num_rows != 1) {
return 0;
} else {
return 1;
}
?>
即使我注释掉 PHP 文件中除了“return 0;”之外的每一行代码,success 字段也不会执行并摆脱 AJAX 调用中的“数据:”行,这让我觉得我的代码有一些可怕的问题,但我一生都无法弄清楚是什么。感谢您的帮助!
【问题讨论】:
-
另外,我希望没有人使用过以下促销代码:
1\'; DELETE FROM users;请阅读有关保护您的应用程序免受 MySQL 注入的信息。 stackoverflow.com/questions/60174/…
标签: javascript php ajax post