0

我有一个 php 文件来验证电子邮件。

<?php
// include pdo config
include_once ('config.php');

// store the values submitted by form in variable
session_start();
$email=$_POST['i_email'];

// query
foreach($pdo->query("SELECT * FROM Users WHERE email='$email'") as $row); {
    if ($email == $row['Email']) {
          $valid = "<script>
        $('#input_email').addClass('invalid');
        $('#input_email').removeClass('valid');
        $('#a_loader_i').hide();
          </script>";
    } else {
          $valid = "<script>
        $('#input_email').addClass('valid');
        $('#input_email').removeClass('invalid');
        $('#a_loader_i').hide();
          </script>";
      $_SESSION['valid'] = true;
    }
    echo $valid;
}

$pdo = null;
?>

现在我使用 ajax 代码将其加载到 div 中。

function i_check_email(id) {

    var val_i_email = $("#input_email").val();
    var i_session = <? $_SESSION['valid'] ?>
    $('#a_loader_i').show();

    $.ajax({
    type: "GET",
    url: '/script/validate_email.php',
    data: {i_emial:val_i_email},
    cache: false,
    success: function() {
    if (i_session) {
        $('#input_email').addClass('valid');
        $('#input_email').removeClass('invalid');
        $('#a_loader_i').hide();
        }
        else {
            $('#input_email').addClass('invalid');
        $('#input_email').removeClass('valid');
        $('#a_loader_i').hide();
    }
    }
    });
}

ajax 代码工作正常。php虽然有些问题。它不作用于 if/else。有没有办法解决这个问题并验证电子邮件?以及如何使用json来验证它?

4

2 回答 2

1

如果我理解得很好,您想检查电子邮件在数据库中的唯一性。如果为真,则足以验证行数并在有效时返回 1,如果无效则返回 0,并在 js 代码中使用这些值

验证者:

<?php
// include pdo config
include_once ('config.php');

// store the values submitted by form in variable
session_start();
$email=$_POST['i_email'];

// query
$rs = $pdo->query("SELECT COUNT(*) FROM Users WHERE email='$email'");
echo ($rs->fetchColumn(0) > 0 ? '0':'1');

$pdo = null;
?>

在js中:

function i_check_email(id) {
var val_i_email = $("#input_email").val();
$('#a_loader_i').show();

$.ajax({
type: "GET",
url: '/script/validate_email.php',
data: {i_emial:val_i_email},
cache: false,
success: function( answer ) {
    if (answer == '1') {
        $('#input_email').addClass('valid');
        $('#input_email').removeClass('invalid');
        $('#a_loader_i').hide();
    }
    else {
        $('#input_email').addClass('invalid');
        $('#input_email').removeClass('valid');
        $('#a_loader_i').hide();
    }
}
});
}

ps:代码中最棘手的部分是foreach右括号后面的分号;)

于 2013-05-02T05:52:40.150 回答
0

在您发送的 AJAX 代码中,i_emial但在您查找的 PHP 中i_email。因此,它可能永远不会在数据库中找到匹配的电子邮件。

于 2013-05-02T05:27:11.950 回答