JQuery重复的电子邮件验证

时间:2016-10-25 19:28:10

标签: php jquery mysql validation

我刚刚开始学习编程,而且我已经在这个问题上被困了几个小时。我有一个注册表单,要求发送电子邮件,如果电子邮件已经注册,它应该检查mysql数据库。我目前正在尝试使用Jquery验证器插件中的远程方法,但我似乎无法使其工作。

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"
        }

1 个答案:

答案 0 :(得分:1)

jQuery Validate的documentation表示

  

通过jQuery.ajax(XMLHttpRequest)调用serverside资源   获取与已验证的名称对应的键/值对   元素及其值为 GET 参数。

     

服务器端响应必须   是一个JSON字符串,必须是&#34; true&#34;对于有效的元素,可以   &#34; false&#34;,undefined,或null表示无效元素

您正在检查$_POST['CusEadd'],并假设您有一个具有该名称的元素,您仍然必须指定POST作为方法

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

另外,你想要返回字符串&#34; true&#34;而不是PHP布尔值,它通常转换为数字

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

并且不要在生产代码中使用mysql_*,只需将'OR 1=1之类的内容传递给POST变量

,您的代码就会对SQL攻击开放