2013-03-05 2 views
0

사용자가 사용하려는 전자 메일이 다른 사용자에 의해 이미 사용되지 않은 경우 알 필요가있는 양식 필드가 사이트에 있습니다.동적으로 양식 데이터 유효성 검사

JavaScript와 PHP를 사용하고 있지만 작동하도록 만들 수 있습니다. 데이터에 대한 데이터베이스에 보이는

function validateEmail(){ 
    //testing regular expression 
    var a = $("#email").val(); 
    var filter = /^[A-Z0-9._%+-][email protected][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 } 받고 있어요하지만 문제는 여기서 찾을 수 없습니다.

+1

나는 주석 앞에 하나의 여분의 "}"이 있다고 믿는다 // 유효하지 않은 경우 ... 거기에 하나의 중괄호를 삭제하고 다시 시도하십시오 ... – henser

+0

PHP 코드는 SQL 주입에 취약하며 단순히 사용자를 사용하지 않습니다. 귀하의 SQL 쿼리에 입력. [mysql_real_escape_string] (http://www.php.net/manual/en/function.mysql-real-escape-string.php)의 PHP 문서를 참조하십시오. 코드를 다음과 같이 변경하십시오 :'$ consulta = "SELECT * FROM usuarios where email = '".mysql_real_escape_string ($ email). ";;;;; 또는 PHP의 [Mysqli] (http : //www.php. net/manual/en/book.mysqli.php) 또는 PDO를 사용하는 경우 현재 MySQL 구현은 더 이상 사용되지 않습니다. – chrki

답변

0

사용하는 모든이

 return true; 
    } 
}); 
    ^^^ // you forgot this 
+1

그게 뭐야. 그리고 제 코드가 SQL 삽입에 배타적이라고 말하는 사람들을 위해, 나는 그것을 알고 있습니다. 이것은 테스트 및 학업 목적을위한 코드 일 뿐이며 보안에 관해 걱정할 필요가 없습니다. – user2135665

2

먼저, 난 그냥 당신이 당신의 코드에서 보안 위험이 있음을 말씀 드리고 싶습니다. 이 라인 :

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

는 사람이 데이터베이스에 대해 SQL을 실행하고 데이터를 검색 할 수 있습니다. 이것은 SQL 주입으로 알려져 있습니다. 최소한 쿼리를하기 전에 이메일을 확인해야합니다.