2017-02-25 4 views
-1

登録フォームを作成中です。ユーザ名とメールアドレスが登録されている場合、登録を許可しないでください。ユーザ名とメールアドレスを確認した後にのみデータベースに挿入

ので、ユーザ情報を挿入し、サインアップ受け入れる前に、私はチェックしています2つの主要な条件 1.ユーザ名が取られている場合 2.電子メールは

前に登録された後、登録のみが通過することができます。

私はPHPにデータを送信するためのAjaxを使用していますが、データが何らかの理由でDBに挿入されません(エラーは表示しない!)

私が間違っているつもりはどこ?

HTMLコード:

<form method="post" role="form" id="register-form" autocomplete="off" action="includes/check_signup.php"> 

     <div class="form-header"> 
      <h3 class="form-title"><i class="fa fa-user"></i><span class="glyphicon glyphicon-user"></span> Sign Up</h3> 

     <div class="pull-right"> 
      <h3 class="form-title"><span class="glyphicon glyphicon-pencil"></span></h3> 
     </div> 

     </div> 

     <div class="form-body"> 

       <!-- json response will be here --> 
       <div id="errorDiv"></div> 
       <!-- json response will be here --> 

       <div class="form-group"> 
        <div class="input-group"> 
        <div class="input-group-addon"><span class="glyphicon glyphicon-user"></span></div> 
        <input name="name" type="text" id="name" class="form-control" placeholder="Name" maxlength="40" autofocus="true" onBlur="checkname();"> 
        </div> 
        <span class="help-block" id="error error-username"></span> 
       </div> 

       <div class="form-group"> 
        <div class="input-group"> 
        <div class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></div> 
        <input name="email" id="email" type="text" class="form-control" placeholder="Email" maxlength="50" onBlur="checkemail();"> 
        </div> 
        <span class="help-block" id="error error-email"></span>      
       </div> 

       <div class="row"> 

        <div class="form-group col-lg-6"> 
         <div class="input-group"> 
         <div class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></div> 
         <input name="password" id="password" type="password" class="form-control" placeholder="Password"> 
         </div> 
         <span class="help-block" id="error"></span>      
        </div> 

        <div class="form-group col-lg-6"> 
         <div class="input-group"> 
         <div class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></div> 
         <input name="cpassword" type="password" class="form-control" placeholder="Retype Password"> 
         </div> 
         <span class="help-block" id="error"></span>      
        </div> 

      </div> 


      </div> 

      <div class="form-footer"> 
       <button type="submit" class="btn btn-info" id="btn-signup" name="signup"> 
       <span class="glyphicon glyphicon-log-in"></span> Sign Me Up 
       </button> 
      </div> 
      <p id='result'></p> 

      </form> 

Ajaxコード:

//check username availability 
function checkname() { 
    jQuery.ajax({ 
     url: "includes/check_signup.php", 
     data:'username='+$("#name").val(), 
     type: "POST", 
     success:function(data){ 
      $("#error").html(data); 
     }, 
     error:function(){} 
    }); 
} 

function checkemail() 
{ 
    jQuery.ajax({ 
     url: "includes/check_signup.php", 
     data:'email='+$("#email").val(), 
     type: "POST", 
     success:function(data){ 
      $("#error").html(data); 
     }, 
     error:function(){} 
    }); 
} 



$('document').ready(function() 
        { 
    // name validation 
    var nameregex = /^[0-9a-zA-Z]+$/; 

    $.validator.addMethod("validname", function(value, element) { 
     return this.optional(element) || nameregex.test(value); 
    }); 

    // valid email pattern 
    var eregex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 

    $.validator.addMethod("validemail", function(value, element) { 
     return this.optional(element) || eregex.test(value); 
    }); 

    $("#register-form").validate({ 

     rules: 
     { 
      name: { 
       required: true, 
       validname: true, 
       minlength: 4 
      }, 
      email : { 
       required : true, 
       validemail: true, 
       remote: { 
        url: "check-email.php", 
        type: "post", 
        data: { 
         email: function() { 
          return $("#email").val(); 
         } 
        } 
       } 
      }, 
      password: { 
       required: true, 
       minlength: 5, 
       maxlength: 15 
      }, 
      cpassword: { 
       required: true, 
       equalTo: '#password' 
      }, 
     }, 
     messages: 
     { 
      name: { 
       required: "Username is required", 
       validname: "Username can be a combination of Alphabets & Numbers", 
       minlength: "your username is too short" 
      }, 
      email : { 
       required : "Email is required", 
       validemail : "Please enter valid email address", 
       remote : "Email already exists" 
      }, 
      password:{ 
       required: "Password is required", 
       minlength: "Password at least have 5 characters" 
      }, 
      cpassword:{ 
       required: "Retype your password", 
       equalTo: "Password did not match !" 
      } 
     }, 
     errorPlacement : function(error, element) { 
      $(element).closest('.form-group').find('.help-block').html(error.html()); 
     }, 
     highlight : function(element) { 
      $(element).closest('.form-group').removeClass('has-success').addClass('has-error'); 
     }, 
     unhighlight: function(element, errorClass, validClass) { 
      $(element).closest('.form-group').removeClass('has-error'); 
      $(element).closest('.form-group').find('.help-block').html(''); 
     }, 
     submitHandler: submitForm 
    }); 


}); 





$('#register-form').submit(function(){ 
    return false; 
}); 

$('#btn-signup').click(function(){ 
    $.post( 
     $('#register-form').attr('action'), 
     $('#register-form :input').serializeArray(), 
     function(result){ 
      $('#result').html(result); 
     } 
    ); 
}); 

PHPコード:たぶん

<?php 

function name(){ 
    global $connection; 
    if(isset($_POST['username'])) 
    { 
     $name=$_POST['username']; 

     $checkdata="SELECT * FROM users WHERE userName='$name' "; 

     $query=mysqli_query($connection, $checkdata); 

     if(mysqli_num_rows($query)>0) 
     { 
      echo "User Name is taken"; 
      return true; 
     } 

     exit(); 
    } 
} 

function email() { 
    global $connection; 
    if(isset($_POST['email'])) 
    { 
     $emailId=$_POST['email']; 

     $checkdata=" SELECT * FROM users WHERE userEmail='$emailId' "; 

     $query=mysqli_query($connection, $checkdata); 

     if(mysqli_num_rows($query)>0) 
     { 
      echo "Email Already Exist"; 
      return true; 
     } 

     exit(); 
    } 
} 

function insert_db(){ 
    global $connection; 
    $name = trim($_POST['name']); 
    $email = trim($_POST['email']); 
    $pass = trim($_POST['cpassword']); 
    $full_name = strip_tags($name); 
    $user_email = strip_tags($email); 
    $user_pass = strip_tags($pass); 

    // sha256 password hashing 
    $hashed_password = hash('sha256', $user_pass); 

    $query = "INSERT INTO users(userName,userEmail,userPassword) VALUES('$name', '$email', '$hashed_password')"; 

    $result = mysqli_query ($connection, $query); 

    if ($result) { 
     echo "You have been registered"; 
     return true; 
    } else { 
     die ("error". mysqli_error ($connection)); 
    } 

} 

if (name()) { 

} elseif (email()) { 

} else { 
    insert_db; 
} 
+0

変数はすべて単独で底に座っています。確かにあなたはそれが関数呼び出しであることを意味していませんでしたか? –

+2

ajaxコールコードを追加してください。 – Ayush

+0

なぜあなたはただ1つのクエリを使用しないのですか? –

答えて

1

それが起こったことがないだ後、あなたは、PHPタグやコードを閉じているので、実行される。

<?php include "config.php"; ?> function name(){ 

dbに結果がないときに関数名()を呼び出すときにスクリプトを終了するには、falseを返すだけです。 exit()の代わりに。

if(mysqli_num_rows($query)>0) 
    { 
     echo "User Name is taken"; 
     return true; 
    } 

    return false; 

まず、すべてのexit()をスクリプトから削除し、falseに置き換えます。

if (name()) { #this will return false 

} elseif (email()) { #after you removed exit() this should return false 

} else { 
    insert_db(); #fix the call 
} 
+0

申し訳ありませんが、完全なコードをコピーしていません。私はその機能を呼び出す方法から考えています。 –

+0

私があなたの提案したとおりにしましたが、今度は取得したユーザー名を入力するたびに、完全なデータをデータベースに挿入しようとしています –

+0

少なくとも、ビジネスロジックをチェックする必要があります。 elseifを修正してください。 –

関連する問題