我在网页上编写电子邮件地址验证时遇到问题。
第一步,检查输入是否像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实现自己的验证方法。
我希望有人可以帮助我。
非常感谢!
答案 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.\"";
感谢您的支持。