0

ユーザー名が既に使用されているかどうかを確認したいのですが、「未定義」を出力するスクリプトは次のとおりです。誰でも私を助けてもらえますか?:)

これは私のjQueryにあります- $("#registerusername").val() は入力の値です。

$.post('checkregister.php',{username: $("#registerusername").val()}, function(data){
    window.alert(data.exists);
    if(data.exists){
        window.alert("Name already found");
    }else{
        window.alert("Name NOT found");
    }
}, 'JSON');

これは私のcheckregister.phpにあります

header('content-type: text/json');
if(!isset($_POST['username']))
exit;
$db = new PDO('mysql:host=localhost;dbname=testdatabase','root','pw000');
$query = $db->prepare("SELECT * FROM users WHERE username = '" . $_POST['username'] . "'");
$query->execute();
echo json_encode(array('exists' => $query->rowCount() > 0));
4

2 に答える 2

2

まず、入力を「サニタイズ」することにより、SQL インジェクションに対して PHP を強化することができます。

次に、php から JSON を返すのはなぜですか? true または false を返すだけの方がはるかに簡単です。

$db = new PDO('mysql:host=localhost;dbname=testdatabase','root','pw000');
$query = $db->prepare("SELECT * FROM users WHERE username = '" . $_POST['username'] . "'");
$query->execute();
if( $query->rowCount() > 0 ){
    echo 'true';
}
else{
    echo 'false';
}

次に、JavaScriptで:

$.post('checkregister.php',{username: $("#registerusername").val()}, function(data){
window.alert(data);
if(data == 'true'){
    window.alert("Name already found");
}else{
    window.alert("Name NOT found");
}
});

edit--- 文字列ではなく php からブール変数を返すこともできますが、どちらも機能します

于 2013-05-08T18:27:04.630 に答える