2015-10-06 29 views
0

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

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

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-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/)) { 
     $("#email-error").html("Invalid Email!"); 
     output = false; 
    } 

我想有一个第四一个检查,如果电子邮件地址已在MySQL数据库。

完整的PHP文件中使用jQuery:

<?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-\.][email protected]([\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

表单一直工作到数据库中的电子邮件地址验证开始,而不是停止。

+0

您可以用'阿贾克斯()'先生。 –

+0

你可以插入它。如果它已经存在,那么大概什么都不会发生/它将会出错,并且一条消息将返回到那个结果。 – Strawberry

回答

0

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

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-\.][email protected]([\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'; 
    } 
?> 
+0

感谢您的帮助!但是,关于新的PHP文件(check_email.php),有一行代码: $ sqlCheckEmail = $ dbConnection-> query(“SELECT user_id FROM users WHERE email like LOWER('”。$ email。“' )“); 我应该在这里更改“user_id”为“email”...吗?由于“电子邮件”是我的数据库的列之一。 –

+0

查询只涉及返回传递给检查的电子邮件ID的记录。所以无论你选择user_id还是emailid。 – Suyog

+0

它还没有工作。也许我犯了一个错误。查看文件:fcmagnate.com/files.zip –