2013-10-29 3 views
-1

전자 메일 (이미 데이터베이스에 있음) 만 입력하면 비어있는 필드의 다른 오류와 함께 오류가보고됩니다. 요청한 내용을 채우고 내가 선택한 전자 메일은 다른 사용자가 이미 사용하고 있습니다그러나 양식을 완전히 채우면, 이미 사용 된 전자 메일로는 전자 메일이 이미 사용 중임을보고하지 않습니다. 입니다. 전자 메일 필드를 포함하여 다른 입력 필드 (잘못 처리 된 경우)는 오류를보고하지만 양식이 완전히 채워지면 가용성을 확인할 수 없습니다. 초점 이메일 그것 자체의 손실, 경우 당신은 다음 최종 사용자 HTML 페이지를 새로 고침하는 경우 동안, 당신은 왜 가능 여부를 확인하지 않는PHP 사용자 이름/이메일 가용성이 작동하지 않습니다.

<?php 
if(isset($_POST['submit'])) 
{ 
    if (empty($_POST["firstName"])) { 
     $Err[] = "* First Name is required"; 
    } else { 
     $name = test_input($_POST["firstName"]); 
     // check if name only contains letters and whitespace 
     if (!preg_match("/^[a-zA-Z ]*$/",$name)) { 
      $Err[] = "Only letters are allowed in First Name"; 
     } 
    } 

    if (empty($_POST["email"])) { 
     $Err[] = "* Email is required"; 
    } else { 
     $email = test_input($_POST["email"]); 
     // check if e-mail address syntax is valid 
     if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) { 
      $Err[] = "Invalid email format"; 
     } else { 
      $emailSQL = "SELECT email FROM userdetails WHERE email = ?"; 
      $SQ = $conn->prepare($emailSQL) or die("ERROR: " . implode(":", $conn->errorInfo())); 

      $SQ->bindParam(1, $email); 
      $SQ->execute(); 
      $result = $SQ->fetch(); 
      if($result > 0) { 
       $Err[] = "Sorry, email is already in use by another user"; 
      } 
     } 
    } 

    if (empty($_POST["surname"])) { 
     $Err[] = "* Surname is required"; 
    } else { 
     $surname = test_input($_POST["surname"]); 
     // check if name only contains letters and whitespace 
     if (!preg_match("/^[a-zA-Z ]*$/",$name)) { 
      $Err[] = "Only letters are allowed in Surname"; 
     } 
    } 
    if (empty($_POST["password"])) { 
     $Err[] = "* Password is required"; 
    } else { 
     $password = test_input($_POST["password"]); 
    } 
    if (empty($_POST["userName"])) { 
     $Err[] = "* Username is required"; 
    } else { 
     $username = test_input($_POST["userName"]); 
     // check if name only contains letters and whitespace 
     if (!preg_match("/^[a-zA-Z ]*$/",$name)) { 
      $Err[] = "Only letters are allowed in Username"; 
     } 
    } 
} 
?> 
+0

'/ ([\ w \ -] + \ [\ w \ -] + \. [\ w \ -] +) /'적절한 이메일 주소 유효성 검사기에 가까이 있지 않습니다. @ example.com'? – tadman

답변

-1

내가 쿼리 겪었 : 여기

코드입니다 그 양식을 다시 채우기위한 노력이 더 많이있을 것입니다.

Ajax와 함께하면 더 쉽게 사용 가능 여부를 확인할 수 있습니다. PHP 코드와 지금

<form>Full name:&nbsp; 
<input type="text" name="name" /><span class="error" id="nameError"></span>; 
Email Address: 
<input id="emailCheck" type="text" name="email" /><span class="error" id="emailError"> 
</form> 

: checkavailability.php
//add in your connection to the database here, mine is just a require_once statement 
//get the passed parameter 
$email = mysql_real_escape_string(strtolower($_POST["email"])); 
//send a request to the database 
$sql = "SELECT email FROM your_dbtable_name WHERE LOWER(email) = '" . $email . "'"; 
$result = mysql_query($sql, $conn) or die("Could not get email: " . mysql_error()); 
if(mysql_num_rows($result) &gt; 0) { 
//email is already taken 
echo 0; 
} 
else { 
//email is available 
echo 1; 
} 

지금 AJAX 스크립트 당신은 같은 파일 또는 외부 JS에 보관 할 수 있습니다.

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
$(document).ready(function() { 
//turns off autocomplete for browsers on email field 
$('#emailCheck').attr('autocomplete', 'off'); 

//listens for typing on the desired field 
$("#emailCheck").keyup(function() { 
//gets the value of the field 
var email = $("#emailCheck").val(); 
//displays a loader while it is checking the database 
$("#emailError").html("<img alt="" src="../images/loader.gif" />"); 
//here is where you send the desired data to the PHP file using ajax 
$.post("../php/checkavailability.php", {email:email}, 
function(result) { 
if(result == 1) { 
//the email is available 
$("#emailError").html("Available"); 
} 
else { 
//the email is not available 
$("#emailError").html("Email not available"); 
} 
}); 
} 
}); 
}); 

또한, (현대에서 모든 HTML 양식 기능의 동일한 종류를 가진 , 물어 주시기 바랍니다 사용자 이름과 동일한 기능을 수행 할 수 있습니다.

감사

+0

감사합니다. @ g patel하지만 원하는 것은 AJAX가 아닌 PHP 쪽입니다. –

관련 문제