AJAX语法:这是这样做的吗?

时间:2011-02-10 08:26:53

标签: php javascript ajax

我正在尝试使用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文件中没有任何变化

1 个答案:

答案 0 :(得分:1)

危险:

$result=mysql_query('SELECT * FROM organisations WHERE FirstName="'.$firstname.'" AND LastName="'.$lastname.'"', $link);

这是SQL注入攻击的邀请!在将它们发送到SQL之前,您需要转义firstnames和lastnames。