Синтаксис AJAX: это способ сделать это? - PullRequest
1 голос
/ 10 февраля 2011

Я пытаюсь использовать AJAX, чтобы проверить, существует ли пользователь в моей базе данных. Для простоты пока я просто проверю имя и фамилию. Вот что я получил:

Файл .php с формой и обработкой ошибок JavaScript:

$.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

EDIT: ТЕКУЩАЯ СИТУАЦИЯ:

$.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 Ответ

1 голос
/ 10 февраля 2011

ОПАСНОСТЬ:

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

Это приглашение к атакам SQL-инъекций!Вам нужно экранировать имена и фамилии, прежде чем отправлять их в SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...