2016-10-25 5 views
0

Я только что начал изучать программирование, и в этой задаче я часами сижу. У меня есть форма регистрации, которая запрашивает электронную почту, и она должна проверять базу данных mysql, если электронная почта уже зарегистрирована. В настоящее время я пытаюсь использовать удаленный метод из плагина проверки JQuery, но я не могу заставить его работать.JQuery Duplicate Email Validation

emailcheck.php

<?php 
include_once 'dbconnect.php'; 
$email = $_POST['CusEadd']; 
$query = "SELECT CusEadd FROM customer WHERE CusEadd='$email'"; 
$result = mysql_query($query); 
$count = mysql_num_rows($result); 

if($count>0){ 
    echo json_encode(FALSE); 
} 
else { 
    echo json_encode(TRUE); 
} 

?> 

форм-validation.js

CusEadd: { 
      required:true, 
      email:true, 
      remote:"emailcheck.php" 
     } 
+0

Если вы с помощью JQuery проверки плагина, я считаю, что это делает GET по умолчанию, вам нужно будет указать POST, если это то, что вы хотите – adeneo

+1

Особенно, если вы только начинаете изучать программирование, пожалуйста, ** не используйте функции 'mysql_ *' от PHP **. Они были устаревшими в PHP 5.5, который настолько стар, что он больше не получает обновлений для системы безопасности и полностью удаляется в PHP 7. Вместо этого используйте PDO или mysqli_ *. – Chris

+1

Да. Я бы определенно прекратил использование mysql и научился использовать PDO. Спасибо, парни! – aeonxs11

ответ

1

documentation для JQuery Validate утверждает, что

ресурс стороне сервера вызывается через JQuery .ajax (XMLHttp Request) и получает пару ключей/значений, соответствующую имени утвержденного элемента , и его значение как GET параметр.

Ответ должен серверного быть JSON строки, которая должна быть «истинной» для действительных элементов, и может быть «ложь», не определена, или нуль для поврежденных элементов

Вы проверяете для $_POST['CusEadd'] и если у вас есть элемент с таким именем, вы должны указать POST как метод

CusEadd: { 
    required:true, 
    email:true, 
    remote: { 
     url : "emailcheck.php", 
     type : "POST" 
    } 
} 

Кроме того, вы хотите, чтобы вернуть строку «истина», а не PHP булевы, который обычно преобразуется в числа

if($count>0){ 
    echo json_encode("false"); 
} 
else { 
    echo json_encode("true"); 
} 

И не используйте mysql_* в производстве код, код открыт для атак SQL, просто передавая что-то вроде 'OR 1=1 к POST переменной

+0

Спасибо! Большое спасибо! Вы - реальная спасательная жизнь. А также я собираюсь удалить mysql и вместо этого использовать mysqli. еще раз спасибо! – aeonxs11