2012-11-23 3 views
1

PHP로 웹 사이트의 등록/로그인 페이지를 구축 중입니다. 내 PHP 코드는 양식의 각 필드의 유효성을 검사하고 양식을 사용자에게 오류로 반환하거나 등록/로그인을 위해 정보를 데이터베이스에/처리합니다. 페이지가 작동하고 기능을 향상시키기 위해 AJAX 호출을 추가하고 싶습니다.AJAX 호출이 여러 개인 PHP 양식

이 사이트 및 여러 다른 사이트를 며칠 동안 탐색 한 후에 이해할 수없는 내용은 각 입력 필드 (사용자 이름, 전자 메일, 암호 등)에 대해 별도의 AJAX 호출을 수행하여 PHP를 허용하는 방법입니다 여러 파일에 코드를 복제하지 않고 제출시 실행할 코드

내 PHP 코드 :

내가 이해에서
$e = array(); 
if (isset($_POST['joinSubmit']) && $_POST['joinSubmit'] == "joinSubmit") 
{ 
    foreach ($_POST as $key => $val) { $_POST[$key] = make_safe($val); } 
    $jUser  = trim($_POST['joinUsername']); 
    $jEmail = trim($_POST['joinEmail']); 
    $jPass  = $_POST['joinPassword']; 
    $jPassConf = $_POST['joinPasswordConfirm']; 

    if (!preg_match('/^[A-Za-z]{1}[A-Za-z0-9-_\.]{5,31}$/', $jUser)) 
    { 
     $e['joinUser'] = 1; 
    } 
    if (!preg_match('/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(([,]|[,])\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*$/', $jEmail)) 
    { 
     $e['joinEmail'] = 1; 
    } 
    if (empty($jPass)) 
    { 
     $e['joinPass'] = 1; 
    } 
    if (!($jPass === $jPassConf)) 
    { 
     $e['joinPassConf'] = 1; 
    } 
} 

, AJAX 호출이 URL 및 데이터를 받아 들인다 :

$(document).ready(function() { 
    $('#joinUsername').keyup(function() { 
     $('#joinUsernameError').load('login.php', { joinUsername : this.value }); 
    }); 
}); 

이 호출이 login.php 페이지로 joinUsername를 전달 그래서

, 정규 PHP 코드를 구조화하여 정규 양식 제출 버튼과 AJAX 호출 모두에서 실행되도록하려면 어떻게해야합니까? 아니면 이것도 가능합니까? 이 키는 하나가 아닌 각 입력 필드에 대한 호출을 처리 할 수 ​​있습니다.

각 입력 필드에 대해 AJAX 호출을 실행하기 위해 별도의 .php 파일을 만들기 시작했지만 처음 두 개 이후에는 빠르게 추가 될 수있는 것처럼 보였습니다. Folks here seemed to not care.

This thread은 각각의 액션을 다른 케이스로 분리 할 것을 제안했는데, 그 시도는 시작되었지만 모든 입력 필드의 유효성 검사가 더 이상 어떻게되는지는 확실하지 않았습니다.

지연 후 AJAX 호출을 실행하기 위해 시간 제한을 추가하기 위해 this thread as well에서 신호를 받았습니다. 아직 구축하지 않았습니다.

다른 양식에 동일한 AJAX 호출에 대한 자습서가 있거나 서로 놓여있는 연결된 호출이 아니라면 내가 놓친 SO 스레드에 대한 링크가 있으면 기꺼이이 질문을 삭제할 것입니다.

조언이 도움이 될 것입니다. 감사.

그것은 당신이해야 할 일을 하나의 PHP 파일을 사용하여 수행 할 수 있습니다
+0

이이 스레드 [http://stackoverflow.com/questions/1909441/jquery-keyup -delay)가 키 업에 시간 초과를 추가하는 것이 더 좋습니다 –

+0

[다음 간단한 AJAX 코드 예제] (http://stackoverflow.com/questi)를 검토하는 것이 유용 할 수 있습니다. on-13499559/make-div-text-change-on-php-data-using-ajax/13501242 # 13501242). – gibberish

+0

나는이 질문이 끝났다는 것이 우스꽝 스럽다고 생각한다. 이 질문은 많은 사람들과 미래의 방문자들에게 관련이 있다고 생각합니다. 찾을 수있는 스레드가 없습니다. 동일한 필드 블록 내에서 AJAX 호출을 사용하여 여러 필드의 유효성을 검사하는 것에 대한 이야기입니다. – gtcharlie

답변

1

아약스를 사용하여이 파일을 호출 지금

switch($_POST['field_name']) { 
    case 'joinUsername' : // check your rule against the value send and echo true or false, or a json result 
          break; 

    case 'joinEmail' : // another rule 
          break; 
    //like this for every field 

} 

당신의 PHP 파일에서 다음과 같이 스위치 케이스의 모든 유효성 검사 규칙을 추가하고 요청에 당신이 있습니다 field_name 및 해당 값을 보내려면 아약 응답을 가져오고 오류를 표시하면 모든 필드에이 아약스 메서드를 포커스 이벤트 손실 된

+0

AJAX 호출과 양식 제출 모두에 논리를 사용하는 방법을 알기가 어려워요. AJAX 호출을 처리하기 위해 별도의 파일을 사용하는 것을 확실히 이해하지만 코드를 두 번 쓰고 있습니다. – gtcharlie

+0

별도의 파일에 보관하고 상단에있는 PHP 파일에이 코드를 추가하고 변수를 보내면 해당 변수가 URL에서 사용 가능한지 확인할 수 있습니다. 유효성 검사를 확인한 다음 파일의 나머지 부분을 실행하십시오 –

+0

나는 별도의 파일에 보관하고 싶지 않습니다. 다시 말하지만, 같은 코드 블록에서 AJAX 호출과 양식 제출 모두에 논리를 사용할 수 있도록 코드를 구조화하는 방법을 알고 싶습니다. – gtcharlie

관련 문제