2012-02-09 109 views
0

這種形式將同時插入一個電子郵件地址和密碼進入我的MySQL數據庫遠程驗證沒有驗證

首先,我嘗試遠程驗證電子郵件,以確保它不存在,同時又有 的PSWD和Pswd2是平等的。

腳本寫入數據庫,但驗證不起作用。我是JQ和Ajax的新手,所以任何幫助都會被讚賞。 謝謝。

FORM:

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" /> 
    <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script> 
    <script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script> 
    <script src="jquery.validate.js" type="text/javascript"></script> 
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/additional-methods.min.js"></script> 

    ... 
     <div data-role="content"> 
      <form id="AddUser" class="ui-body ui-body-a ui-corner-all" data-ajax="true" > 
        <fieldset> 
         <div data-role="fieldcontain"> 
          <label for="Email">Email Address:</label> 
          <input id="Email" type="email" /> 
         <label for="Pswd">Password:</label> 
          <input id="Pswd" type="password" /> 
         <label for="Pswd2">Confirm Password:</label> 
          <input id="Pswd2" type="password" />  
         </div> 
         <button type="submit" id="submit" data-theme="b" name="submit" value="submit-value">Submit</button> 
        </fieldset> 
     </form>  
     </div> 

... 
下面

是文檔裏面的JS:

<script> 
    $(document).ready(function() { 

     var validator = 
     $('#AddUser').validate({ 
      rules: { 
       Pswd: { 
        required: true, 
       }, 
       Pswd2: { 
        required: true, 
        equalTo: "#Pswd" 
       }, 
       Email: { 
        required: true, 
        email: true, 
        remote: "process/ValidateEmail.php" 
       } 
      }, 
      messages: { 
       Pswd: { 
        required: "Provide a password", 
       }, 
       Pswd2: { 
        required: "Repeat your password", 
        equalTo: "Enter the same password as above" 
       }, 
       Email: { 
        required: "Not A Valid Email Address", 
        remote: "already in use" 
       } 
      } 
     }); // end var validator 

      if (validator) 
      { 
       $("#AddUser").submit(function(){   
       //make Variables 
       var emailVar =$('input[id=Email]').val(); 
       var pswdVar = $('input[id=Pswd]').val(); 
       var pswdconfirm = $('input[id=Pswd2]').val(); 
       var querystring = "Email="+emailVar+"&Pswd="+pswdVar; 

       $.post("process/AddUser.php",querystring); 

      }); //end submit() 
      }; // end if validator 


    }); //end ready() 

    </script> 

的驗證文件(ValidateEmail.php)

<?php 

    $UserEmail = $_POST["Email"]; 

    include "connection.php"; 

    $sqlEmail= mysql_query("Select EmailAddress from USERS where EmailAddress='$UserEmail'"); 
    $EmailCheck=mysql_fetch_array($sqlEmail); 

    if (mysql_num_rows($EmailCheck) > 0) { 
     echo json_encode(true); 
    } else { 
     echo json_encode(false); 
    } 

?> 
+0

解決它:我回到公式,並發現validation.php中的一些錯誤也是如果(驗證)不正確 – JordanR 2012-02-10 15:06:58

回答

0

我回到代碼後一些研究,發現它在js和php驗證中都存在錯誤:

<script> 
    $(document).ready(function() 
    { 

    var validator = $("#AddUser").validate({ 
     rules: { 
      Email: { 
       required: true, 
       email: true, 
       remote: "process/ValidateEmail.php" 
      }, 
      Pswd: { 
       required: true, 
      }, 
      Pswd2: { 
       required: true, 
       equalTo: "#Pswd" 
      }, 
     }, 
     messages: { 
      Pswd: { 
       required: "Provide a password", 
      }, 
      Pswd2: { 
       required: "Repeat your password", 
       equalTo: "Password Mismatch" 
      }, 
      Email: { 
       required: "Invalid Email", 
       remote: jQuery.format("{0} is already used") 
      } 
     }, 
     // the errorPlacement has to take the table layout into account 
     errorPlacement: function(error, element) { 

       error.appendTo(element.parent().next()); 
     }, 
     // specifying a submitHandler prevents the default submit, good for the demo 
     submitHandler: function() {   

      //make Variables 
      var emailVar =$('input[id=Email]').val(); 
      var pswdVar = $('input[id=Pswd]').val(); 
      var pswdconfirm = $('input[id=Pswd2]').val(); 
      var querystring = "Email="+emailVar+"&Pswd="+pswdVar; 

      $.post("process/AddUser.php",querystring); 

      $('#AddUser').clearForm(); 
     return false; 

     }, 
     // set this class to error-labels to indicate valid fields 
     success: 

      function(label) { 
      label.html("&nbsp;").addClass("checked"); 

     } 
     }); 
    }); 
</script> 
0
  email: { 
      required: true, 
      email: true, 
      remote: { 
       url: "check-email.php", 
       type: "post", 
       data: { 
        email: function() { 
         return $("[name='email']").val(); 
        } 
       } 
      } 
      }, 

和PHP必須是這樣的:

$email= $_POST['email']; 
include 'connect.php'; 
$email = trim(mysql_real_escape_string($email)); 
$query = mysql_query("SELECT COUNT(id) FROM users WHERE email = '$email'") or die(mysql_error()); 
echo (mysql_result($query, 0) == 1) ? 'false' : 'true'; 

要小心,不要附和只是假意或真心,必須等呼應這個「假」或真