2016-06-01 5 views
1

이메일이 이미 접수되었는지 확인할 수있는 방법은 무엇입니까? 나는 스크립트를 발견했으나 "checking .."만을 표시하고 이메일이 존재한다면 정확한 결과를 얻을 수 없다. 당신은 코드가 아래 :제출하기 전에 이메일 확인이 작동하지 않습니다.

<span id="usernamestatus"></span> 
<input type="text" onblur="checkusername()" id="sign_up_email_input_first" name="email_sign_up" placeholder="E-Mail"> 

     function checkusername() { 
       var status = document.getElementById("usernamestatus"); 
       var u = document.getElementById("sign_up_email_input_first").value; 
       if (u !="") { 
        status.innerHTML = 'checking...'; 
        var hr = new XMLHttpRequest(); 
        hr.open("POST", "name_check.php", true); 
        hr.setRequestHeader("Content-type", "application/x-www-form-urlendcoded"); 
        hr.onreadystatechange = function(){ 
         if (hr.readyState == 4 && hr.status ==200) { 
          status.innerHTML = hr.responseText; 
         } 
        } 
        var v = "name2check="+u; 
        hr.send(v); 
       } 
      } 

name_check.php 당신의 PHP 파일에서

if(isset($_POST['sign_up_email_input_first']) && $_POST['sign_up_email_input_first'] != "") { 
     $username = $_POST['sign_up_email_input_first']; 
     $sql_name_check = mysql_query("SELECT id FROM users WHERE email = '$username' LIMIT 1"); 
     $uname_check= mysql_num_rows($sql_name_check); 
     if(strlen($username)<4){ 
      echo "You have invalid e mial adress"; 
      exit(); 
     } 
     if($uname_check <1){ 
      echo "<strong>". $username. "</strong> Is OK"; 
      exit(); 
     }else{ 
      echo "<strong>" .$username. "</strong> is taken!"; 
      exit(); 
     } 
    }               
+4

*이 코드는 예상대로 작동하지 않습니다. 디버거를 단계별로 실행할 때 관찰 된 동작이 예상되는 동작과 정확히 다른 점은 무엇입니까? 무슨 일이 생기면 런타임 값은 무엇입니까? 또한이 코드는 ** SQL injection **에 대해 광범위하게 열려 있기 때문에 문자 그대로 데이터베이스의 * anything *을 실행할 수 있습니다. 또한 데이터베이스 쿼리를 실행 한 후에 항상 수행해야하는 오류도 확인하지 않습니다. 데이터베이스 *가 문제의 원인을 알려주고있을 수도 있습니다. – David

답변

1

을 대체와

$_POST['sign_up_email_input_first'] 

: 당신은 기본적으로

$_POST['email_sign_up'] 

GR 아이디가 아닌 이름이있는 ab 값

+0

양식이 아닌 아약스 요청입니다. – Khaleel

0

양식을 제출하지 않았습니다. 필드 이름이 'u'인 데이터를 name_check.phpxmlhttprequest으로 보내면됩니다.

$_POST['sign_up_email_input_first'] 대신 $_POST['u']을 PHP 파일에 사용해보세요.

관련 문제