이메일이 이미 접수되었는지 확인할 수있는 방법은 무엇입니까? 나는 스크립트를 발견했으나 "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();
}
}
*이 코드는 예상대로 작동하지 않습니다. 디버거를 단계별로 실행할 때 관찰 된 동작이 예상되는 동작과 정확히 다른 점은 무엇입니까? 무슨 일이 생기면 런타임 값은 무엇입니까? 또한이 코드는 ** SQL injection **에 대해 광범위하게 열려 있기 때문에 문자 그대로 데이터베이스의 * anything *을 실행할 수 있습니다. 또한 데이터베이스 쿼리를 실행 한 후에 항상 수행해야하는 오류도 확인하지 않습니다. 데이터베이스 *가 문제의 원인을 알려주고있을 수도 있습니다. – David