如何验证唯一的电子邮件地址?

时间:2014-11-06 20:19:00

标签: php ajax

我试图让我的表单验证电子邮件地址onblur或onkeyup,以检查我的数据库中是否已存在电子邮件地址。

不确定我是否差点使用此代码,但有些东西不起作用。现在,只要我开始在字段中输入,电子邮件的输入框就会根据我输入的电子邮件地址(如果它已经在我的数据库中)的标记来标记。 AJAX中的else语句不起作用,如果我仍然提交表单,我会在页面上从我创建的错误框中收到一条消息,提到语法错误。

另外,我的部分php是使用mysqli和mysql,这对于尝试让这个输入字段进行验证有什么不同吗?

输入ID是电子邮件,名称是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');
             }
        });
    });
});

0 个答案:

没有答案