0

自分のサイトに、ユーザーが使用したい電子メールが他のユーザーによってまだ使用されていないかどうかを知る必要があるフォームフィールドがあります。

私はそのためにJavaScriptとPHPを使用していますが、それを機能させることができます。

function validateEmail(){
    //testing regular expression
    var a = $("#email").val();
    var filter = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/;
    //if it's valid email
    if(filter.test(a)){
        if($("#email").val() != ""){
            $.getScript("http://localhost/sisdelivery/validaEmail.php?&email="+$("#email").val(), function(){
                if(resultadoEmail["email"] != ""){
                    email.addClass("error");
                    emailInfo.text("Email ja cadastrado!");
                    emailInfo.addClass("error");
                    return false;
                }
                else{
                email.removeClass("error");
                emailInfo.text("Email OK");
                emailInfo.removeClass("error");
                return true;
                }
            }
        }
    }
    //if it's NOT valid
    else{
        var valEmail = $("#email").val();
        if(valEmail == ""){
            email.addClass("error");
            emailInfo.text("Favor digitar um email!");
            emailInfo.addClass("error");
            return false;
        }
        else{
            email.addClass("error");
            emailInfo.text("O email digitado e invalido");
            emailInfo.addClass("error");
            return false;
        }
    }
}

データベースでデータを検索するPHPコード:

<?php
include "conecta.php";
$email = $_GET['email'];

$consulta = "SELECT * FROM usuarios WHERE email = '$email';";
$result = mysql_query($consulta);
$num = mysql_num_rows($result);

if($num == 0)
    echo "var resultadoEmail = { 'email' : '' }";

else{
    while($row = mysql_fetch_object($result)){
        $email = $row -> email;
    }
    echo "var resultadoEmail = { 'email' : '$email' }";
}
?>

エラーUncaught SyntaxError: Unexpected token }が発生しましたが、どこに問題があるのか​​わかりません。

4

2 に答える 2

2

まず、コードにセキュリティリスクがあることをお伝えしたいと思います。この行:

$email = $_GET['email'];
$consulta = "SELECT * FROM usuarios WHERE email = '$email';";

人がデータベースに対してSQLを実行し、データを取得できるようにします。これはSQLインジェクションとして知られています。少なくともクエリを実行する前に、電子メールを検証する必要があります。

于 2013-03-05T12:17:58.493 に答える
0

これを使って

     return true;
  }
 });
  ^^^ // you forgot this
于 2013-03-05T12:17:00.753 に答える