【问题标题】:Form validation to see if the email already excists in the MySQL database表单验证以查看电子邮件是否已存在于 MySQL 数据库中
【发布时间】:2015-10-06 08:39:27
【问题描述】:

目前我有一个带有验证的表单(PHP 和 jQuery)。我想添加一个验证来检查新用户的电子邮件地址是否已经在 MySQL 数据库中。

目前 jQuery 中的姓名和电子邮件已经有 3 个 (IF) 验证:

function validate() {
var output = true;
$(".signup-error").html('');
if($("#personal-field").css('display') != 'none') {
    if(!($("#name").val())) {
        output = false;
        $("#name-error").html("Name required!");
    }
    if(!($("#email").val())) {
        output = false;
        $("#email-error").html("Email required!");
    }   
    if(!$("#email").val().match(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/)) {
        $("#email-error").html("Invalid Email!");
        output = false;
    }

我想要第四个来检查电子邮件地址是否已经在 MySQL 数据库中。

带有 jQ​​uery 的完整 PHP 文件:

<?php
    include 'db_connection.php';    
    if(isset($_POST['finish'])){
        $name   = '"'.$dbConnection->real_escape_string($_POST['name']).'"';
        $email      = '"'.$dbConnection->real_escape_string($_POST['email']).'"';
        $password   = '"'.password_hash($dbConnection->real_escape_string($_POST['password']), PASSWORD_DEFAULT).'"';
        $gender     = '"'.$dbConnection->real_escape_string($_POST['gender']).'"';

        $sqlInsertUser = $dbConnection->query("INSERT INTO users (name, password, email, gender) VALUES($name, $password, $email, $gender)");
    }
?>

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8" />

<title></title>

<link rel="stylesheet" href="css/reset.css" />
<link rel="stylesheet" href="css/text.css" />
<link rel="stylesheet" href="css/960.css" />
<link rel="stylesheet" href="css/demo.css" />

<script src="scripts/jquery-1.10.2.js"></script>

<style>

CSS CODE

</style>

<script>
function validate() {
var output = true;
$(".signup-error").html('');
if($("#personal-field").css('display') != 'none') {
    if(!($("#name").val())) {
        output = false;
        $("#name-error").html("Name required!");
    }
    if(!($("#email").val())) {
        output = false;
        $("#email-error").html("Email required!");
    }   
    if(!$("#email").val().match(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/)) {
        $("#email-error").html("Invalid Email!");
        output = false;
    }
}
if($("#password-field").css('display') != 'none') {
    if(!($("#user-password").val())) {
        output = false;
        $("#password-error").html("Password required!");
    }   
    if(!($("#confirm-password").val())) {
        output = false;
        $("#confirm-password-error").html("Confirm password required!");
    }   
    if($("#user-password").val() != $("#confirm-password").val()) {
        output = false;
        $("#confirm-password-error").html("Password not matched!");
    }
}
return output;
}
$(document).ready(function() {
    $("#next").click(function(){
        var output = validate();
        if(output) {
            var current = $(".active");
            var next = $(".active").next("li");
            if(next.length>0) {
                $("#"+current.attr("id")+"-field").hide();
                $("#"+next.attr("id")+"-field").show();
                $("#back").show();
                $("#finish").hide();
                $(".active").removeClass("active");
                next.addClass("active");
                if($(".active").attr("id") == $("li").last().attr("id")) {
                    $("#next").hide();
                    $("#finish").show();                
                }
            }
        }
    });
    $("#back").click(function(){ 
        var current = $(".active");
        var prev = $(".active").prev("li");
        if(prev.length>0) {
            $("#"+current.attr("id")+"-field").hide();
            $("#"+prev.attr("id")+"-field").show();
            $("#next").show();
            $("#finish").hide();
            $(".active").removeClass("active");
            prev.addClass("active");
            if($(".active").attr("id") == $("li").first().attr("id")) {
                $("#back").hide();          
            }
        }
    });
});
</script>

</head>

<body>

<div class="container_12">

    <div class="grid_8">
    <p>
    TEXT<br>TEXT<br>TEXT<br>TEXT<br>TEXT
    </p>
    </div>

<div class="grid_4">

<p>Register new FC Magnate</p>

<div class="message"><?php if(isset($message)) echo $message; ?></div>

<ul id="signup-step">
    <li id="personal" class="active">Personal Detail</li>
    <li id="password">Password</li>
    <li id="general">General</li>
</ul>

<form name="frmRegistration" id="signup-form" method="post">
<div id="personal-field">
    <label>Name</label><span id="name-error" class="signup-error"></span>
    <div><input type="text" name="name" id="name" class="demoInputBox"/></div>
    <label>Email</label><span id="email-error" class="signup-error"></span>
    <div><input type="text" name="email" id="email" class="demoInputBox" /></div>
</div>
<div id="password-field" style="display:none;">
    <label>Enter Password</label><span id="password-error" class="signup-error"></span>
    <div><input type="password" name="password" id="user-password" class="demoInputBox" /></div>
    <label>Re-enter Password</label><span id="confirm-password-error" class="signup-error"></span>
    <div><input type="password" name="confirm-password" id="confirm-password" class="demoInputBox" /></div>
</div>
<div id="general-field" style="display:none;">

    <label>Gender</label>
    <div>
    <select name="gender" id="gender" class="demoInputBox">
    <option value="female">Female</option>
    <option value="male">Male</option>
    </select></div>
</div>
<div>
    <input class="btnAction" type="button" name="back" id="back" value="Back" style="display:none;">
    <input class="btnAction" type="button" name="next" id="next" value="Next" >
    <input class="btnAction" type="submit" name="finish" id="finish" value="Finish" style="display:none;">
</div>
</form>

</div>

“db_connection.php”文件:

<?php
    define('_HOST_NAME', 'localhost');
    define('_DATABASE_USER_NAME', 'root');
    define('_DATABASE_PASSWORD', '****');
    define('_DATABASE_NAME', '****');

    $dbConnection = new mysqli(_HOST_NAME, _DATABASE_USER_NAME, _DATABASE_PASSWORD, _DATABASE_NAME);
    if ($dbConnection->connect_error) {
        trigger_error('Connection Failed: '  . $dbConnection->connect_error, E_USER_ERROR);
     }

?>

我尝试从网站上提供的其他示例创建此验证。但是,没有成功。拜托,如果有人能进一步帮助我,那就太好了。

更新:在 Suyog 的帮助下,我更改了文件。但是,它似乎还没有工作。以下是我目前使用的文件:fcmagnate.com/files.zip

该表单在数据库中的电子邮件地址验证开始之前一直有效,然后停止。

【问题讨论】:

  • 你可以使用Ajax()先生。
  • 你可以插入它。如果它已经存在,那么大概什么都不会发生/它会出错,并且将返回一条消息。

标签: php jquery mysql validation


【解决方案1】:

为此,您必须使用 JQuery AJAX。 在 AJAX 中编写一个函数,将电子邮件发送到 php gage,我们将在其中检查电子邮件的存在。

<script>
function checkEmail(eMail)
{
    $.ajax({ 
        url: 'check_email.php',
        data: {emailId: eMail},
        type: 'post',
        success: function (data) { 
            if(data == '1')
                return false;
            else
                return true;
        }
    });
}
</script>

然后就可以调用这个函数了

<script>
function validate() 
{
    var output = true;
    $(".signup-error").html('');
    if($("#personal-field").css('display') != 'none') 
    {
        if(!($("#name").val())) 
        {
            output = false;
            $("#name-error").html("Name required!");
        }
        if(!($("#email").val())) 
        {
            output = false;
            $("#email-error").html("Email required!");
        }   
        if(!$("#email").val().match(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/)) 
        {
            $("#email-error").html("Invalid Email!");
            output = false;
        }
        if(!checkEmail($("#email").val()))
        {
            $("#email-error").html("Email already exist!");
            output = false;
        }
    }
}
</script>

你的check_email.php文件会包含如下代码

<?php
    include 'db_connection.php';    
    if(isset($_POST['emailId']))
    {

        $email = '"'.$dbConnection->real_escape_string($_POST['emailId']).'"';

        $sqlCheckEmail = $dbConnection->query("SELECT user_id FROM users WHERE LOWER(email) like LOWER('%".$email."%')");

        if($sqlCheckEmail->num_rows == 1)
            echo '1';
        else
            echo '0';
    }
?>

【讨论】:

  • 已经感谢您的帮助!但是,关于新的 PHP 文件 (check_email.php),只有一行代码: $sqlCheckEmail = $dbConnection->query("SELECT user_id FROM users WHERE email like LOWER('".$email."')");我应该在这里将“user_id”更改为“email”吗...?因为“电子邮件”是我数据库的列之一。
  • 查询只涉及返回传递给检查的电子邮件ID的记录。所以无论你选择 user_id 还是 emailid。
  • 还不行。也许我犯了一个错误。查看文件:fcmagnate.com/files.zip
【解决方案2】:

在客户端使用 Ajax jQuery.ajax 与服务器端通信,重用您提到的 php 代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 2014-05-10
    • 2021-11-03
    • 2020-12-09
    • 2019-09-17
    • 1970-01-01
    相关资源
    最近更新 更多