0

メールの空き状況を確認したいのですが、何か問題があります。私が持っているフォーム内:

<input id="inpMail" name="email" type="text" placeholder="E-mail">  

JS

$(document).ready(function() {
    $("#inpMail").change(function() { 
        var mail = $("#inpMail").val();
        var msgbox = $("#status");  //`status` is a div

        if (mail.length > 4) {
            $("#status").html('<img src="img/loader.gif" align="absmiddle">&nbsp;Checking availability...');  //this works

            $.ajax({  
                type: "POST",  
                url: "ajax.php",  // this file is in the same folder
                data: "mail="+ mail,  
                success: function(msg) {  
                    $("#status").ajaxComplete(function(event, request){ 
                        if (msg == 'OK') { 
                            msgbox.html('<img src="img/available.png" align="absmiddle">');  //doesn't work
                        }  
                        else {  
                            msgbox.html(msg);  // doesn't work
                        }  
                    });
                } 
            }); 
        }
        else {
            $("#status").html('<font color="#cc0000">Please enter atleast 5 letters</font>');  //this works
        }
        return false;
    });
});

ajax.php

$conn = mysql_connect("localhost","root","") or die("Database not connected");  // this message never appears
$db = mysql_select_db("vedic", $conn) or die("Database not connected"); 

if (isset($_POST['inpMail']))
{
    $mail = $_POST['inpMail'];
    $sql = mysql_query("select id from members where email='$mail'"); 
    // my db is named `vedic`, table is `members` some fields are `id` and `email`  

    if (mysql_num_rows($sql))
    {
        echo '<STRONG>'.$mail.'</STRONG> is already in use.';
    }
    else
    {
        echo 'OK';
    }
}
4

2 に答える 2

4

ajaxCompleteハンドラーsuccessは既に発生しているため、コールバックに追加する必要はありません。これを試して:

success: function(msg) {  
    if (msg == 'OK') { 
        msgbox.html('<img src="img/available.png" align="absmiddle">');
    }  
    else {  
        msgbox.html(msg);
    }  
} 

また、PHP コードはインジェクション攻撃に対して無防備です。代わりにパラメーター化されたクエリを使用してください。

于 2013-09-04T10:51:54.793 に答える