2014-02-17 7 views
0

사용자가 새 계정을 등록 할 때 전자 메일이 데이터베이스에 있는지 확인하고 있습니다. "EmailMessage"는 데이터베이스에있는 전자 메일을 넣을 때 나타나지 않습니다. 코드는 아래의 위치 :전자 메일이 데이터베이스에 존재하는지 확인

function validateemail() { 
    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 

      var response = xmlhttp.responseText; 
      response = response.replace(/^\s+|\s+$/g,'') 

      if(response == 'error'){ 
       document.getElementById("EmailMessage").innerHTML='This e-mail address is already taken! If you believe this is in error, please email <a href="mailto:[email protected]">[email protected]</a>'; 
       document.getElementById("newemail").focus(); 
       document.getElementById("email_notice").style.display="none"; 
       document.getElementById("submit_new_account").disabled =true; 
      } 
      else { 
       document.getElementById("EmailMessage").innerHTML=""; 

      } 
     } 
     } 
    var newemail = document.getElementById("newemail").value; 


    if(newemail!=""){ 
     xmlhttp.open("GET","Checkemail.php?email="+newemail,true); 
     xmlhttp.send(); 
    } 

    else{ 
     document.getElementById("EmailMessage").innerHTML=""; 

     document.getElementById("submit_new_account").disabled =false; 
     } 


} 

Checkemail.php을 validateemail.js

$emailexists = $_GET['email']; 

    $sql = executeQuery("SELECT email from tbl_Users WHERE email = '$emailexists'"); 
    $i = getNumRows($sql); 

    if ($i !=0) { 
     echo "error";   
    }else { 
      echo "pass"; 

    } 

--- 



    <input type="text" id="newemail" name="newemail" maxlength="60" size="27" onblur="validateemail();"/> 
     </div> 
     <div id="EmailMessage" style="color:#F00"></div> 
+2

당신이 이것을 좁혔습니까? 전자 메일 주소로 PHP를 직접 호출하여 적절한 응답을 얻을 수 있습니까? – andrewsi

+0

내가 할 때 "오류"가 발생합니다. – ChaseC

+0

다음 단계는'var_dump ($ sql)'과'var_dump ($ i)'를 사용하여 거기에있는 값을 확인하는 것입니다. 아마도 어떤 이유로 쿼리가 실패했을 것입니다. – andrewsi

답변

0

시도 : $sql = executeQuery("SELECT email from tbl_Users WHERE email = '".$emailexists."'");

은 또한, 완전히 (문제, 보안 문제를) 코드를 변경하는 것을 고려하십시오. ..

+1

차이가 없어야합니다. 문자열이 이미 큰 따옴표로 묶여 있으므로 명시 적으로 연결하지 않고 변수를 보간합니다. – andrewsi

+0

Urgh, 맞습니다! 내가 뭘 생각했는지 확신 할 수 없어. 대부분 내 생각에'''과 보간 된 따옴표와 혼동을 느낍니다. –

관련 문제