使用jQuery Validation Plugin的远程方法进行电子邮件地址验证

时间:2013-05-21 23:25:07

标签: php javascript jquery ajax

我在网页上编写电子邮件地址验证时遇到问题。

第一步,检查输入是否像someone@somewhere.tld一样有效。但是第二次检查,如果电子邮件已经存在于数据库中,似乎根本不起作用。

我正在使用jQuery Validation插件。

到目前为止,这是我的代码:

从register.php中提取:

<form action="addKunde.php" id="contact-form" method ="post" class="form-horizontal">
<div class="control-group">
    <label class="control-label" for="email">E-Mail-Addresse</label>
    <div class="controls">
    <input type="text" class="input-xlarge" name="email" id="email">
    </div>
</div>
<script src="js/jquery.min.js"></script>
<script src="js/jquery.validate.js"></script>
<script src="script.js"></script>

从script.js中提取:

$(document).ready(function(){
    $('#contact-form').validate({
    rules: {
            email: {
                maxlength: 100,
                required: true,
                email: true,
                remote: {
                    url : "check.php",
                    type : "post"
                }
            }
        },
        highlight: function(element) {
            $(element).closest('.control-group').removeClass('success').addClass('error');
        },
        success: function(element) {
            $(element).addClass('valid').closest('.control-group').removeClass('error').addClass('success');
        }
    });
});

从check.php中提取:

<?php
include('mysql.php');
$email = trim(strtolower($_POST['email']));
$email = mysqli_real_escape_string($con, $username);
$result = mysqli_query($con, "SELECT * FROM Kunde WHERE EMail = '$email' LIMIT 1;");
$num = mysqli_num_rows($result);
if($num == 0){
    echo "true";
} else {
    echo "E-Mail-Adresse schon registriert.";
}
mysqli_close($con);
?>

我一直在谷歌搜索几个小时,遵循各种不同的指示,甚至尝试使用jQuery-Validation的addMethod实现自己的验证方法。

我希望有人可以帮助我。

非常感谢!

2 个答案:

答案 0 :(得分:0)

也许是字符串“E-Mail-Adresse schon registriert”。正在评估成功检查的真实性。您可以尝试将其更改为“false”,看看它是否有所作为?

答案 1 :(得分:0)

我自己想通了: 问题发生在check.php中。而不是使用

转换邮件请求发送的电子邮件地址
$email = trim(strtolower($_POST['email']));
$email = mysqli_real_escape_string($con, $username);

(我甚至不记得我在哪里找到这段代码)无论如何,我用以下代码替换了它:

$email = urldecode($_POST['email']);

有效。也可以将自定义验证消息作为字符串返回。它必须放在转义引号中,以便javascript将其视为字符串:

echo "\"eMail-Address already registered.\"";

感谢您的支持。