【发布时间】:2015-01-03 21:50:45
【问题描述】:
我试图让我的表单验证电子邮件地址 onblur 或 onkeyup,以检查电子邮件地址是否已存在于我的数据库中。
不确定我是否几乎可以使用此代码,但有些东西不起作用。现在,只要我开始在该字段中输入,电子邮件的输入框就会根据我希望它的标记方式进行标记,如果电子邮件地址已经在我的数据库中输入的话。 AJAX 中的 else 语句不起作用,如果我仍然提交表单,我会从我创建的错误框中收到一条消息,指出语法错误。
另外,我的部分 php 正在使用 mysqli 和 mysql,这与尝试验证此输入字段有什么不同吗?
输入id为email,名称为Email;我认为我的代码是正确的,但并不完全确定。
PHP:
define('DB_NAME', 'database');
define('DB_USER', 'user');
define('DB_PASSWORD', 'password');
define('DB_HOST', 'host');
$first = Trim(stripslashes($_POST['First']));
$last = Trim(stripslashes($_POST['Last']));
$city = Trim(stripslashes($_POST['City']));
$state = Trim(stripslashes($_POST['State']));
$country = Trim(stripslashes($_POST['Country']));
$email = Trim(stripslashes($_POST['Email']));
$tempt = $_POST['tempt'];
$tempt2 = $_POST['tempt2'];
$link = mysqli_connect('host','user','password','members') or die("Error " . mysqli_error($link));
$stmt = mysqli_prepare($link, 'SELECT count(*) FROM members WHERE email =?');
mysqli_stmt_bind_param($stmt, 's', $_POST['Email']);
mysqli_stmt_execute($stmt);
/* bind result variables */
mysqli_stmt_bind_result($stmt, $count);
/* fetch value */
mysqli_stmt_fetch($stmt);
mysqli_stmt_close($stmt);
if ($count == 0) {
echo 'true';
}else{
echo 'false';
}
if ($tempt == 'http://' && empty($tempt2)) {
$error_message = '';
$reg_exp = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/";
if(!preg_match($reg_exp, $email)) {
$error_message .= "<p>A valid email address is required.</p>";
}
if (empty($first)) {
$error_message .= "<p>Please provide your first name.</p>";
}
if (empty($last)) {
$error_message .= "<p>Please provide your last name.</p>";
}
AJAX:
$(function() {
if (valid != '') {
$('form #response2').removeClass().addClass('error2')
.html('' +valid).fadeIn('fast');
}
var valid = '';
$('#email').keyup(function() {
$.post('script.php', { 'Email' : $(this).val() }, function(data) {
if(data !== 'true') {
$('#email').css('border','2px solid #ff0000');
$('#email').css('background-color','#ffcece');
valid += '<p>This email has already subscribed.</p>';
}else{
$('#email').css('background-color','green');
}
});
});
});
【问题讨论】:
-
您的 php 页面上的数据库连接在哪里?
-
它在我的页面底部
-
但是您正在查询它以返回正确的电子邮件匹配?可以发一下吗?
-
我刚刚定义了它。
-
哦,是的,那你需要做一个查询,见@amit_183。