2016-06-30 2 views
0

私は持っているデータベースを照会したページにリダイレクトするAJAX呼び出しで簡単なログインフォームを実装しようとしており、ユーザーをインデックスページにリダイレクトするか、ログインページに戻します。AJAXログインコールに問題があります

HTML:

<form method="post"> 
<h4> Please Login </h4> 
    <input id="user" class="name" type="text" placeholder="Enter Username"/> 
    <input id = "pass" class="pw" type="password" placeholder="Enter Password"/> 
    <ul> 
     <li><a href="#">Forgot your password?</a></li> 
     <li><a href="#">Please Register Here</a></li> 
    </ul> 
    <input class="hvr-shrink" id="submitlogin" type="submit" value="Log in"/> 
</form> 

jQueryの/ AJAX:

$("#submitlogin").click(function() { 
    var $username = document.getElementById("user").value; 
    var $pass = document.getElementById("pass").value; 
    $.ajax ({ 
     url: "login_request.php", 
     type: "POST", 
     data: { 
      'username' : $username, 
      'password' : $pass 
     } 
    }); 
}); 

login_request.php

include "connect.php"; 
$myusername = mysqli_real_escape_string($db,$_POST['username']); 
$mypassword = mysqli_real_escape_string($db,$_POST['password']); 

$sql = "SELECT username, password FROM `CGSB_Compliance`.`nd_users` WHERE username = '$myusername' AND password = '$mypassword'"; 
$result = mysqli_query($db, $sql); 
$count = mysqli_num_rows($result); 

if($count == 1){ 
    $_SESSION['user'] = $myusername; 
    header("location:index.php"); 
} else { 
    header("location:login.php"); 
} 

私は、1つのユーザ名とパスワード、そして私がログインするたびに持つテーブルを持っていますログインページを更新するだけです。私はコードを数回チェックしましたが、なぜそれが機能していないのかという理由を見つけることができません。私はそれは私の部分で愚かな間違いだと感じているが、私は多くの例を見て、彼らはすべてほぼ同じことがあります。どんな助けもありがとうございます。

+1

[リトルボビー](http://bobby-tables.com/)と言い*** [。あなたのスクリプトがSQLインジェクション攻撃のリスクがある](HTTPを制限するpreventDefault()を追加/stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php**** [prepared](http://en.wikipedia.org/wiki/Prepared_statement)のステートメントについては、 [MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! –

+1

**プレーンテキストパスワードを保存しないでください!**パスワードのセキュリティを処理するには、PHPの[組み込み関数](http://jayblanchard.net/proper_password_hashing_with_PHP.html)を使用してください。 5.5より小さいPHPバージョンを使用している場合、 'password_hash()' [互換パック](https://github.com/ircmaxell/password_compat)を使用することができます。 *** [パスワードをエスケープしない](http://stackoverflow.com/q/36628418/1011527)***を確認するか、ハッシュする前に他のクレンジングメカニズムを使用してください。パスワードを変更すると、パスワードが変更され、不要な追加のコーディングが発生します。 –

+3

フォームの再読み込みを停止するために何もしていません。あなたは何が起こっているかを見るために開発者コンソールを使うべきです。 'type =" submit "を' type = "buttonに変更してみてください。" – j08691

答えて

-1

私の友人私はあなたの問題はあなたのjQueryの/ AJAXであると思う:</body>タグの下にそれを置くか、私はあなたのcode問題は、あなたのajax requestをするつもりはないということです試してみました$(document).ready(function{});

+0

jqueryファイルが含まれていることを確認してください。それ以外には –

0

こんにちは内に置きますあなたのlogin page.$signjavascript variablesで使用しないでくださいvarまたは何も使用しないでください。 jQuery libraryに電話していない可能性もあります。

私はこれを試して自分自身を実行しています。これをお試し下さい。解決策を見つけたら、それをあなたの答えとすることを躊躇しないでください。

// download file and save in your file if you are not connected to net and include with correct path 

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
    <Script> 
    $(document).ready(function(){ 

    $("#postsubmit").click(function(e) { 
     var pass = $("#pass").val(); 
     var username = $("#user").val(); 
      $.ajax({type:"POST",url:"login_request.php",data:{password:pass, username:username}, 
        }); 
     }); 
    }); 
     </script> 

    <h4> Please Login </h4> 
    <form name="postcontent" > 


     <input id="user" class="name" type="text" placeholder="Enter Username"/> 
     <input id = "pass" class="pw" type="password" placeholder="Enter Password"/> 
     <ul> 
      <li><a href="#">Forgot your password?</a></li> 
      <li><a href="#">Please Register Here</a></li> 
     </ul> 
     <input name="postsubmit" type="button" id="postsubmit" value="Sing Up"/> 

    </form> 

    login_request.php 

    <?php 
    $db = mysqli_connect('localhost','root','','yourdatabasename'); 
    echo $myusername = mysqli_real_escape_string($db,$_POST['username']); 
    echo $mypassword = mysqli_real_escape_string($db,$_POST['password']); 

    $sql = "SELECT username, pass FROM reg WHERE username = '$myusername' AND pass = '$mypassword'"; 
    $result = mysqli_query($db, $sql); 
    $count = mysqli_num_rows($result); 
    if($count == 1){ 
     $_SESSION['user'] = $myusername; 
     header("location:index.php"); 
    } else { 
     header("location:login.php"); 
    } 
はあなたの table namedatbase nameあなたに応じて変更

。 /:

もさわやかページ

+0

詳細な回答ありがとうございます。今すぐ試してみてください。 jQueryがロードされているので問題ありません。 – ybce

+0

まだ動作していない場合、ボタンをクリックするとページは何もしません。ボタンが機能をトリガーしますが、何も起こりません。 – ybce