2017-07-06 18 views
-1

私はAJAXのFRIMを経由して、単一のJavaScriptファイルをユーザ名と電子メールを検証しようとすると、単一のPHPファイルにデータを送信しています...私のコードがある複数のAJAXは、単一のPHPファイルで呼び出す

HTMLコード - >

<input type="text" name="user_name" id="user_name" onBlur="userChk()" class="form-control" placeholder="Username" /> 
    <input type="email" name="email" id="email" onBlur="emailchk()" class="form-control" placeholder="Email"> 

JavaScriptコード - >

function userChk(){ 
    var user_name = $('#user_name').val(); 
     $.ajax({ 

     type : 'POST', 
     url : 'login/signup-fn.php', 
     data : { name: user_name}, 
     success : function(data) 
       { 
        $("#result").html(data); 
       } 
     }); 
     return false; 
    } 

    function emailchk(){ 
    var email = $('#email').val(); 
     $.ajax({ 

     type : 'POST', 
     url : 'login/signup-fn.php', 
     data : {email:email}, 
     success : function(data) 
       { 
        $("#result").html(data); 
       } 
     }); 
     return false; 
    } 

PHPコード - >

include('../components/connectdb.php'); 
if($_POST['name']) { 
    $user_name  = strip_tags($_POST['name']); 
     $uselect_sql= "SELECT user_name FROM users WHERE user_name='{$user_name}'"; 

     $uselect_query = mysqli_query($conn, $uselect_sql); 

     $urow = mysqli_num_rows($uselect_query); 

     if($urow > 0){ 
     echo "<div class='alert alert-danger alert-dismissable fade in'><a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>User Name Already Exist</div>"; 
    } 
    else 
    { 
     echo ""; 
    } 
    } 


    else if($_POST['email']){ 
     $email = ($_POST['email']); 
     $eselect_sql= "SELECT email FROM users WHERE email='{$email}'"; 

     $eselect_query = mysqli_query($conn, $eselect_sql); 

     $erow = mysqli_num_rows($eselect_query); 
     if($erow > 0){ 
     echo "<div class='alert alert-danger alert-dismissable fade in'><a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a><strong>Warning!</strong>Email Already Exist</div>"; 
    } 
    else 
    { 
     echo ""; 
    } 
    } 

私はどこがミスケルなのか分かりません...私はweb devlopmentで新しいです。

+1

** WARNING **:あなたが使用する必要がありますmysqli' '使用する場合は、[パラメータ化クエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[ 'bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用して、クエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'、' $ _GET'、**任意の**ユーザデータを直接クエリーに入れないでください。誰かがあなたのミスを悪用しようとすると非常に危険です。 'strip_tags'は適切な保護方法ではありません。 – tadman

+0

注: 'mysqli'へのオブジェクト指向インタフェースは、コードの読み込みと監査を容易にし、' mysql_query'インタフェースと混同しにくいものになりました。手続き型スタイルに多額の投資をする前に、それを切り換える価値があります。例: '$ db = new mysqli(...)'と '$ db-> prepare(" ... ")' – tadman

+1

ここで問題は何ですか? SQLインジェクションを別にすると、うまくいく可能性があります。 JavaScriptコンソールとネットワークインスペクターを見て、これらの呼び出しが正しくトリガーされているかどうかを確認し、Webサーバーのエラーログで通知を確認してください。 – tadman

答えて

1

isset()を追加する必要があります。それ以外の場合は、定義されていないインデックスエラーが発生します。なぜなら、名前検査のためのajax呼び出しが電子メール変数を呼び出すと仮定すると、エラーは未定義のインデックス電子メールを投げるので、変数は設定されません。

if($_POST['name'])は未定義の変数をチェックしません。

include('../components/connectdb.php'); 
if(isset($_POST['name'])) { 
    $user_name  = strip_tags($_POST['name']); 
     $uselect_sql= "SELECT user_name FROM users WHERE user_name='{$user_name}'"; 

     $uselect_query = mysqli_query($conn, $uselect_sql); 

     $urow = mysqli_num_rows($uselect_query); 

     if($urow > 0){ 
     echo "<div class='alert alert-danger alert-dismissable fade in'><a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>User Name Already Exist</div>"; 
    } 
    else 
    { 
     echo ""; 
    } 
    } 


    else if(isset($_POST['email'])){ 
     $email = ($_POST['email']); 
     $eselect_sql= "SELECT email FROM users WHERE email='{$email}'"; 

     $eselect_query = mysqli_query($conn, $eselect_sql); 

     $erow = mysqli_num_rows($eselect_query); 
     if($erow > 0){ 
     echo "<div class='alert alert-danger alert-dismissable fade in'><a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a><strong>Warning!</strong>Email Already Exist</div>"; 
    } 
    else 
    { 
     echo ""; 
    } 
    } 
関連する問題