2012-03-23 3 views
0

사용자가 제공 한 데이터가 클라이언트 (브라우저)와 서버 모두에서 동일한 테스트를 거친다는 것을 보증하는 메커니즘이 있습니까?PHP에서의 테스트 양식이 Javascript 코드와 일치하는지 확인하십시오.

즉, 한 묶음의 테스트를 구성하고 (예 : PHP에서) 다른 끝에 자동으로 동일한 테스트를 생성 할 수 있습니까 (이 예에서는 Javascript). 물론 이것은 다른 방향 일 수 있습니다.

양식을 확인하기 위해 브라우저에서 자바 스크립트를 싶습니다

편집 할 수 있습니다. 그러나 사용자는이를 끌 수 있습니다. 데이터가 유효한지 확인하려면 해당 테스트를 수행하기 위해 서버 코드 (PHP)를 가져와야합니다. 언어에 관계없이 데이터의 유효성을 보장하기 위해 한 세트의 테스트를 생성하여 개발 노력을 줄이고 미러링 할 데이터의 유효성을 변경할 수 있습니까?

+0

예가 명확하지 않습니다. 이는 서버와 사용자가 별도의 완전히 무관 한 역할을 수행하도록하는 HTTP 단순성 때문에 명확하지 않습니다. – austincheney

+2

JS에서 PHP와 같은 방식으로 데이터의 유효성을 검사한다는 의미인가요? 두 가지 모두에 대해 동일한 코드가 있습니까? 물론 코드 작성이 쉽습니다. 하지만 다른 하나에서 코드에 대한 발전기 .. 그렇게 확실하지 않습니다. 나는 동급의 코드를 작성하는 것이 낫다고 생각한다. JS의 일부 기능은 PHP에 존재하지 않으며 그 반대의 경우도 마찬가지입니다. – Joseph

+1

그는 양식의 A와 B 필드에 대해 유효성을 검사하기를 원합니다. 그는 서버 및 클라이언트 측 모두에 대해 한 번 프로그램을 작성할 수 있는지 알고 싶어하며 둘 다 사용할 수 있습니다. –

답변

0

내가 생각할 수있는 유일한 유사한 테스트 세트는 클라이언트와 서버 측 코드에서 동일한 방식으로 사용될 수있는 표현입니다 (regex). 다른 테스트는 변수의 길이가 될 수 있으며 특수 문자를 검사 할 수 있습니다.

그러나 JavaScript는 스크립트 태그 파서 인 SQL 주입 방지 메소드를 사용할 수 없기 때문에 많은 취약점이 있음을 기억하십시오. 중요한 데이터를 서버로 필터링하지 않으면 데이터의 유효성을 완전히 테스트 할 수 없습니다.

자바 스크립트 유효성 검사는 데이터 검사와 관련하여 주로 사용자 인터페이스를 개선하는 데 도움이 될 것입니다. 잘못된 입력으로 인해 양식 데이터가 손실되어 사용자를 괴롭히지 않으므로 alert, localStorage 및 ajax 메서드를 사용하여 서버 의견과 비동기 적으로 확인할 수 있습니다.

따라서 클라이언트 측과 서버 측 프로그램간에 데이터 검사 방법을 완전히 복제 할 수는 없습니다.

+0

고맙습니다 - Javascript는 더 나은 사용자 경험을위한 것입니다. 따라서 클라이언트에서 (자바 스크립트가 활성화 된 상태에서) * 확인 *을 클릭하면 데이터가 전달됩니다. 그러나 서버는 자체 무결성을 보장해야합니다. 즉 데이터를 확인하고 클라이언트를 신뢰하지 마십시오. 두 언어로 코딩하지 않고도 양면에서 동일한 테스트를 수행하는 것이 편리할까요? –

+0

즉, 서버 측 검사를 강화하십시오. 당신은 ** 클라이언트 측 검증에 의존해서는 안됩니다 **. 그들은 빠른 유효성 확인을위한 것이며, 심각한 유효성 확인을위한 것이 아닙니다. – Joseph

+0

클라이언트 측은 내가 말했듯이 과시하기위한 것입니다. 하지만 아약스를 사용하면 서버를 과시하고 동시에 클라이언트에서 작업을 유지할 수 있습니다. 따라서 클라이언트 측에서 수행하지 않는 일부 작업은 사용자가 onkeyup 이벤트로 입력 할 때 서버 측에서 확인할 수 있습니다. 그러나 JavaScript에는 데이터베이스에 데이터를 삽입하는 동안 확인해야하는 'PDO 문'또는 'mysql_real_escape_string'이 없으므로 PHP 유효성 검사가 필요합니다. 따라서 클라이언트 측 유효성 검사는 사용자가 페이지를 다시로드 (예 : 더 나은 사용자 환경) 할 수 없도록하려는 경우에만 사용하십시오. – jmishra

0

짧은 대답 - 아니요. xajax과 같은 것들이 자바 스크립트가 서버 측에서 생성되어 프론트 엔드에 영향을 미칠 서버 측 코드를 작성하고 유효성 검사 코드 일부를 재사용 할 수있었습니다. 그러나 나는 그것을 나쁜 습관이라고 생각한다. 백엔드 테스트와 프론트 엔드 테스트를 별도로 작성해야합니다. 속도가 너무 빠르며 너무 빡빡한 커플 링이 아니라 너무 많이 다른 점이 다릅니다.

+0

입력 문자열이 어떤 식으로 테스트되어야합니까? –

+0

예기치 않은 일에 의존성이있을 수 있습니다. 어딘가에있는 확인란과 같습니다. 백엔드에 전달하려면 추가 정보를 추가해야합니다. 더 복잡한 상호 작용이 이루어지면 이해하고 유지하는 것이 더 어려워집니다. –

+0

Kurpov -하지만 브라우저의 데이터 (자바 스크립트로 검사되었을 가능성이 있음)는 서버 (PHP)가 끝날 때 테스트하고 확인합니다. 즉 그게 내 질문이다. 어떻게 그 수표와 잔액을 조화 시키는가? –

0

이것이 나에게 작은 프로젝트가 될 것입니다. 유효성의 일부를 검사하기 위해 자바 스크립트와 PHP를 생성합니다 (예 : 정규식, 길이 ...).

가치가있을 수 있습니다.

관련 문제