2012-04-11 28 views
0

私はajax呼び出しでlogin.phpをやっています...私のajaxビットコードとlogin.phpコードです..有効なユーザー名とパスワードも与えています..無効になっていますユーザー名やパスワードのmessage..amは完全にコードlogin.phpへのajaxコールの応答が失敗しました

$is_ajax = $_REQUEST['is_ajax']; 
    if(isset($is_ajax) && $is_ajax) // in login.php, Many thanks 

$("#login").click(function() {  
    var action = $("#form1").attr('action'); 
    var form_data = { 
     username: $("#username").val(), 
     password: $("#password").val(), 
     is_ajax: 1 
    }; 

    $.ajax({ 
     type: "POST", 
     url: login.php, 
     data: form_data, 
     success: function(response) 
     { 
      if(response == 'success') 
       $("#form1").slideUp('slow', function() { 
        $("#message").html("<p class='success'>You have logged in successfully!</p>"); 
       }); 
      else 
       $("#message").html("<p class='error'>Invalid username and/or password.</p>");  
     } 
    }); 

    return false; 
}); 

のこれらの行を理解できなかったし、これは、login.phpのコードです。あなたが$_REQUESTを使用しているため

<?PHP 
if(isset($_REQUEST['is_ajax']) && $_REQUEST['is_ajax']) { 
    $is_ajax = $_REQUEST['is_ajax']; 

    $uname = $_POST['username']; 
    $pword = $_POST['password']; 
    $uname = htmlspecialchars($uname); 
    $pword = htmlspecialchars($pword); 

    $user_name = "root"; 
    $pass_word = "root"; 
    $database = "test"; 
    $server = "127.0.0.1"; 

    $username = $_REQUEST['username']; 
    $password = $_REQUEST['password']; 

    $db_handle = mysql_connect($server, $user_name, $pass_word); 
    $db_found = mysql_select_db($database, $db_handle); 
    $uname = quote_smart($uname, $db_handle); 
    $pword = quote_smart($pword, $db_handle); 
    $SQL = "SELECT * FROM login WHERE L1 = $uname AND L2 = md5($pword)"; 
    $result = mysql_query($SQL); 
    $num_rows = mysql_num_rows($result); 
    if ($num_rows > 0) { 
     echo "success"; 
    } 

    mysql_close($db_handle); 
} 
?> 
+1

なぜ 'url'パラメータではありません引用符で囲まれた文字列?今は 'login'という名前のオブジェクトの' php'プロパティです。これはおそらくあなたが望むものではありません。 – apsillers

+0

Sir..iは成功メッセージを受け取っていないのに( 'login.php')コードを入れました.. – user1160126

+0

私の前に誰かが、 '$ uname'と' $ pword'の固定(既知の)文字列を'$ _POST'から引っ張るのではなく、PHPファイルです。あなたがそれをすれば成功のメッセージを受け取るのですか? – apsillers

答えて

0

あなたのPHPは、非常に保存し、GET/POSTで動作していません。 デバッグlogin.phpまず、PHPノートを取得する場合は、ajaxレスポンスが変更されるため、修正する必要があります。

yoursite.com/login.php?is_ajax=1&username=XXXX&password=XXXX

ブラウザでのみ「成功」の単語を取得している場合は、JavaScriptがsuccessハンドラにconsole.debug(response)を追加することにより、受信しているかを見るのブラウザでこれを実行してみてください。 FirebugコンソールまたはChromeコンソールで値をプレビューします。

+0

有効な値を指定することで、ブラウザ「yoursite.com/login.php?is_ajax=1&username=XXXX&password=XXXX」に何も表示されません。 – user1160126

+0

POSTからいくつかのものが得られたことに気付きました。 '$ _REQUEST'を実行しても動作しない場合は、PHPコードをデバッグしてください。あなたのSQL Selectを変数に設定して、それが正しく見えるようにダンプしてください。 – Alex

+0

「失敗メッセージ」を受け取っています – user1160126

1

いくつかのこと:

  1. あなたは、クエリで使用する前に、ユーザー入力をサニタイズする必要があります。 htmlspecialcharsはしません。 mysql_real_escape_stringを使用してください(おそらく、quote_smartでしょうか?)。
  2. URLは引用されていないため、コードとして解釈されます。 login.phpを引用符で囲みます。
  3. $_POST$_REQUESTが何であるかを理解してください。実際に$usernameまたは$passwordをどこにも使用していないようですので、今のところあなたを傷つけているようには見えませんが、$_POSTアレイの内容全体が$_REQUESTアレイにも含まれています$_GETおよび$_COOKIE)。
  4. PHPスクリプトでは、スクリプトが失敗した場所を確認するために何らかのエラーメッセージが表示され、jQueryスクリプトではレスポンスをエラーメッセージに追加して実際の応答を確認する必要があります。

これを試してみてください:

$("#login").click(function() {  
    var action = $("#form1").attr('action'); 
    var form_data = { 
     username: $("#username").val(), 
     password: $("#password").val(), 
     is_ajax: 1 
    }; 

    $.ajax({ 
     type: "POST", 
     url: "login.php", 
     data: form_data, 
     success: function(response) 
     { 
      if(response == 'success') 
       $("#form1").slideUp('slow', function() { 
        $("#message").html("<p class='success'>You have logged in successfully!</p>"); 
       }); 
      else 
       $("#message").html("<p class='error'>Invalid username and/or password. (debugging, response = '". response ."'</p>");  
     } 
    }); 

    return false; 
}); 

login.php:

if(isset($_POST['is_ajax']) && $_POST['is_ajax']) 
{ 
    $username = mysql_real_escape_string($_POST['username']); 
    $password = mysql_real_escape_string($_POST['password']); 

    $dbUsername = "root"; 
    $dbPassword = "root"; 
    $database = "test"; 
    $server = "127.0.0.1"; 

    $db_handle = mysql_connect($server, $dbUsername, $dbPassword); 
    $db_found = mysql_select_db($database, $db_handle); 
    $result = mysql_query("SELECT * FROM login WHERE L1 = '{$username}' AND L2 = MD5('{$password}')"); 
    $num_rows = mysql_num_rows($result); 
    if ($num_rows > 0) 
     echo "success"; 
    else 
     echo "username '{$username}' and password '{$password}' not found"; 

    mysql_close($db_handle); 
} 
else 
    echo "is_ajax = {$_POST["is_ajax"]}"; 
関連する問題