2010-11-27 3 views
4

현재 서버 측 (PHP)에서 사용자 입력의 유효성을 검사 중입니다. 클라이언트 쪽에서 XMLHttpRequest 호출을 보내고 유효하지 않은 필드를 빨간색 테두리로 표시합니다. 그 밖의 모든 것들은 클라이언트가 요청을하고 너무 틀린 것을 알기에는 너무 오래 걸린다는 것을 제외하고는 위대합니다. 클라이언트가 요청을 완료 할 때까지 기다릴 필요가 없도록 일부 JavaScript 유효성 검사를 배치해야한다고 생각합니다.중복을 최소화하면서 클라이언트 및 서버 측 유효성 검사를 어떻게 사용할 수 있습니까?

그러나 유효성 검사 규칙 및 코드를 복제하고 싶지는 않습니다. 누구든지 양쪽에 유효성 검사를 구현 했으므로 적어도 유효성 검사 규칙을 복제 할 필요가 없습니까?

저는 중요한 점이 있다면 Yii와 일반 JavaScript를 jQuery와 함께 사용하고 있습니다.

편집 : 또한 클라이언트의 컴퓨터에서 잘못된 시간을 사용하여 JavaScript 기반 날짜/시간 검사를 잘못 수행하는 것이 지루하다는 것을 알았습니다. 즉, 서버에서 스크립트까지 올바른 datetime을 제공해야합니다.

+0

아니요, 아직 없습니다. 하지만 HTML5 스타일의'pattern = \ w +'regexes 클라이언트 사이드를 통지 용으로, 서버 측을 필터링 용으로 재사용 할 계획입니다. 중복을 줄일 수 있습니다 (프로그래밍되지 않은 PHP 양식 라이브러리가 주어짐). – mario

답변

1

저는 PEAR의 빠른 양식이 클라이언트와 서버 측 모두에 대해 유효성 검사를 동시에 추가 할 수 있다고 믿습니다.

Yii 프레임 워크를 사용하고 있기 때문에 Yii는 폼 생성 프레임 워크를 확장하여 유효성 검사기 필드를 확인하는 몇 가지 방법을 살펴본 다음 각 유효성 검사 클래스를 js에 매핑합니다 당신이 아주 빨리 쓸 수 있어야하는 기능. http://www.yiiframework.com/extension/jformvalidate/

2

필드를 확인하고 일반적인 방법으로 설정하는 PHP 함수를 만듭니다. 그래서 당신은 클라이언트 쪽에서와 같이 서버 쪽에서 그것을 사용할 수 있습니다.

클라이언트 측에서는 jquery를 사용하여 PHP 유효성 검사 기능에 대한 AJAX 호출을 수행합니다.

+0

이것이 최선의 방법입니다. +1 – methodin

+0

지금 제가하고있는 일은 XHR을 만들고 빨간색 테두리가있는 유효하지 않은 필드를 표시하는 것입니다. 내가보기에 문제는 요청이 길어지면 사용자가 요청을 완료 할 때까지 기다려야하므로 바보 같고 사용할 수 없게됩니다. – Tower

-1

은 우선 사용자를 신뢰 결코 말할 수에서 ... 사용자는 ... 자바 스크립트를 변경할 수 있도록 서버 측 유효성 검사가 필요

초입니다 : 우리는 클라이언트 측 유효성 검사를 사용하는 이유? 속도.

나는 두 가지 방법을 사용해야한다고 생각합니다. 당신은 낭비하는 사용자 시간을 원하지 않는다.

은 js와 보낸 데이터로 유효성을 검사한다. 잘못된 데이터 종료 사용자가있는 경우 admin에서

+2

정확히 OP가 할 계획입니다. 문제는 그것을하는 방법입니다. – casablanca

0

유효성 검사 규칙을 정규식으로 설명 할 수있는 경우 한 곳에서 정의 할 수 있으며 생성 된 JavaScript에서 사용하는 PHP 코드에서 동일한 정규식을 사용할 수 있습니다.

+0

날짜가 허용되는 범위 내에 있는지 확인하는 것보다 더 많이 필요합니다. – Tower

1

는 확실히 어떤 목적을 위해 검사를 클라이언트 측 날짜를 사용하지 마십시오

또한이 작업을 수행합니다 확장이있을 나타납니다. 당신은 바로 그 사람입니다.

각 유효성 검사마다 하나의 코드를 작성하고 싶습니다.

이메일 확인을 수행하는 PHP 함수를 코드화하면 다음과 같습니다. validate_email().

일단 사용자가 제출을 누르면 모든 데이터를 ajax를 사용하여 PHP 코드로 보내고 유효성을 검사 할 수 있습니다.

사용자가 제출 단계를 마치면 validate_email()을 사용하여 $ _POST의 유효성을 검사 할 수 있습니다.

이렇게하면 코드를 하나 작성하고 유지 관리가 더 쉽습니다.

자바 스크립트에 비해 느린가? 말하기 힘듭니다. 추가 jquery 유효성 검사 플러그인을 추가하는 것도 페이지에 부하가 걸리는 것을 기억하십시오. jquery의 경우 Here is a popular validation plugin, 축소 된 버전은 25KB입니다. 이제 코드가 깔끔하고 유지 관리가 더 쉽습니다. 홈페이지 인 경우 플러그인을 사용한다고 가정하면 가장 중요한 방문 페이지에 25KB의로드가 저장되었습니다.

+0

언급 된 jQuery 유효성 검사 플러그인은 훌륭합니다. 매우 사용하기 쉽고 맞춤 규칙으로 쉽게 확장 할 수 있습니다. –

0

가능한 방법과 같은 일부 의사 코드 : PHP에서

: 자바 스크립트

function validate() { 
    // Use $_POST to validate whatever items in whatever fashion you want 
    // and echo a message or some JSON array etc... 
} 

은 (jQuery를 가정)

$('#formButton').click(function(event){ 
    event.preventDefault(); 
    $.post('/url/of/page', $(this).serializeArray(), function(response){ 
     // Assuming JSON data, but could just be a string or message, 
     // check for response.success or whatever from validation 
     if(response.success) $('#form').submit(); 
     else // Some error message or action 
    }); 
}); 

이 반면 AJAX 호출 아마도 약간의 오버 헤드 는 실제 POST 또는 AJAX를 통해 원하는 모든 유효성 검사 방법을 사용하고 코드를 동일하게 유지할 수 있습니다. PHP의 $ _POST 반복에서 간단한 응답을 얻지는 못합니다. 또한 필요한 경우 쿼리를 실행할 수 있습니다. 물론 모든 것이 두 번 실행되기 때문에 간단하게 유지하려고 할 수 있습니다.

+0

PeeHaa에 대한 제 의견을 참조하십시오. – Tower

+0

로컬? 서버에서? 양식 검증을위한 간단한 PHP 요청은 거의 즉각적이어야합니다. 유효성 검사 전에 하위 파 서버가 있거나로드 오버 헤드가 발생하면 문제가 발생할 수 있습니다. 귀하의 양식은 얼마나 큰가요? – methodin

관련 문제