我正在尝试使用AJAX来检查用户是否已存在于我的数据库中。为简单起见,我现在只检查名字和姓氏。这是我得到的:
包含表单和JavaScript错误处理的.php文件:
$.get('verify_unique.php',{firstname:frm.add_fd2.value, lastname:frm.add_fd3.value},function(data){
if (data.matches>0){
var num_rows='1';
}else{
var num_rows='0';
}
}, "json");
function check(frm) {
var szAlert = "Invalid\n";
var nIndex = 0;
if (num_rows > 0) {
nIndex++;
szAlert += "- " +"This name already exists "+num_rows +" times\n";
}
if (!RequiredField(frm.add_fd1.value)) {
nIndex++;
szAlert += "- " +"'Title' cannot be blank\n";
}
等
文件verify_unique.php:
// DATABSE PARAMETERS
$link = @mysql_connect($host,$user,$passwd);
$database=mysql_select_db($db);
$firstname=$_GET['firstname'];
$lastname=$_GET['lastname'];
$result=mysql_query('SELECT * FROM organisations WHERE FirstName="'.$firstname.'" AND LastName="'.$lastname.'"', $link);
header('Content-Type: application/json');
echo '{matches:'.mysql_num_rows($result).'}';
?>
当我提交表单时,不仅不会返回我的AJAX警告,它还会跳过我的javascript检查。不幸的是,它没有抛出任何错误。 有人能看出我哪里出错吗?
由于 的Marius
编辑: 当前情况:
$.get('verify_unique.php',{firstname:frm.add_fd2.value, lastname:frm.add_fd3.value},function(data){
if (data.matches>0){
var num_rows='1';
}else{
var num_rows='0';
}
}, "json");
调试器:没有定义frm。 frm是此页面上唯一表单的名称,可以通过javascript调用来执行完整性检查没问题。 verify_unique.php文件中没有任何变化
答案 0 :(得分:1)
危险:
$result=mysql_query('SELECT * FROM organisations WHERE FirstName="'.$firstname.'" AND LastName="'.$lastname.'"', $link);
这是SQL注入攻击的邀请!在将它们发送到SQL之前,您需要转义firstnames和lastnames。