맛없는 검증 PHP. PHP를 사용한 검증 및 데이터 정리. 자신만의 유효성 검사 규칙 등록

웹 애플리케이션을 구축할 때 보안을 심각하게 고려하는 것이 중요하며, 특히 사용자로부터 데이터를 획득해야 하는 경우에는 더욱 그렇습니다.

일반적인 보안 규칙은 누구도 신뢰하지 않는 것이므로 사용자가 항상 양식에 올바른 값을 입력할 것이라고 믿을 수는 없습니다. 예를 들어 필드에 올바른 이메일 주소를 입력하는 대신 사용자가 잘못된 주소를 입력하거나 일부 악성 데이터를 입력할 수도 있습니다.

사용자 데이터의 유효성을 검사하는 경우 클라이언트 측(웹 브라우저) 또는 서버 측에서 수행할 수 있습니다.

이전에는 클라이언트 측 유효성 검사가 JavaScript를 통해서만 수행될 수 있었습니다. 그러나 HTML5의 도움으로 JavaScript로 복잡한 유효성 검사 스크립트를 작성할 필요 없이 브라우저에서 유효성 검사를 수행할 수 있으므로 모든 것이 변경되었습니다(또는 거의 변경되었습니다).

HTML5를 사용한 양식 유효성 검사

HTML5는 유형, 패턴 및 요구 사항과 같은 태그 속성을 기반으로 매우 강력한 메커니즘을 제공합니다. 이러한 새로운 속성을 사용하면 일부 데이터 유효성 검사 기능을 브라우저로 오프로드할 수 있습니다.

양식 유효성 검사에 어떻게 도움이 되는지 이해하기 위해 이러한 속성을 살펴보겠습니다.

유형 속성

이 속성은 데이터 처리를 위해 표시할 입력 필드(예: 다음과 같은 친숙한 필드)를 알려줍니다.

일부 입력 필드는 추가 코드를 작성할 필요 없이 이미 표준 유효성 검사 방법을 제공합니다. 예를 들어 입력된 값이 유효한 이메일 주소의 템플릿과 일치하는지 확인하기 위해 필드를 확인합니다. 필드에 잘못된 문자를 입력한 경우 값이 수정될 때까지 양식을 제출할 수 없습니다.

아래 데모에서 이메일 필드 값을 가지고 놀아보세요.

숫자, URL, 전화번호를 각각 확인하는 , 와 같은 다른 표준 필드 유형도 있습니다.

참고: 전화번호 형식은 전화번호의 자릿수와 형식의 차이로 인해 국가마다 다릅니다. 결과적으로 사양에서는 전화번호 확인을 위한 알고리즘을 정의하지 않았으므로 이 기능을 작성하는 시점에는 브라우저에서 이 기능을 제대로 지원하지 않습니다.

다행스럽게도 전화번호 유효성 검사는 정규식을 인수로 사용하는 패턴 속성을 사용하여 수행할 수 있습니다. 이에 대해서는 다음에 살펴보겠습니다.

패턴 속성

패턴 속성은 많은 프런트 엔드 개발자를 기쁘게 만들 것입니다. 이 속성은 필드에 입력된 데이터의 정확성을 확인하는 데 사용되는 정규식(JavaScript 정규식 형식과 유사)을 허용합니다.

정규식은 텍스트를 구문 분석하고 조작하는 데 사용되는 언어입니다. 복잡한 찾기 및 바꾸기 작업과 입력된 데이터의 정확성을 확인하는 데 자주 사용됩니다.

오늘날 정규식은 가장 널리 사용되는 프로그래밍 언어뿐만 아니라 많은 스크립팅 언어, 편집기, 애플리케이션, 데이터베이스 및 명령줄 유틸리티에 포함되어 있습니다.

정규식(RegEX)은 개별 문자, 단어 또는 문자 패턴과 같은 텍스트 문자열을 일치시키기 위한 강력하고 간결하며 유연한 도구입니다.

패턴 속성의 값으로 정규식을 전달하면 특정 입력 필드에 허용되는 값을 지정할 수 있을 뿐만 아니라 사용자에게 오류를 알릴 수도 있습니다.

정규식을 사용하여 입력 필드 값의 유효성을 검사하는 몇 가지 예를 살펴보겠습니다.

전화 번호

앞서 언급했듯이 tel 필드 유형은 국가마다 전화번호 형식이 일치하지 않기 때문에 브라우저에서 완전히 지원되지 않습니다.

예를 들어, 일부 국가에서는 전화번호 형식이 xxxx-xxx-xxxx이고 전화번호 자체는 0803-555-8205와 같습니다.

이 패턴과 일치하는 정규식은 ^\d(4)-\d(3)-\d(4)$ 입니다. 코드에서는 다음과 같이 작성할 수 있습니다.

전화 번호:

영숫자 값 속성이 필요합니다

이는 양식을 제출하기 위해 특정 필드의 값을 채워야 함을 나타내는 데 사용되는 부울 속성입니다. 이 속성을 필드에 추가하면 브라우저는 사용자에게 양식을 제출하기 전에 이 필드를 작성하도록 요구합니다.

이렇게 하면 JavaScript를 사용하여 필드 유효성 검사를 구현하지 않아도 되므로 개발자의 시간이 절약될 수 있습니다.

예: 또는(XHTML 호환성의 경우)

위에서 본 모든 데모는 필수 속성을 사용하므로 필드를 작성하지 않고 양식을 제출하여 시험해 볼 수 있습니다.

결론

양식 유효성 검사에 대한 브라우저 지원은 매우 훌륭하며 이전 브라우저의 경우 폴리필을 사용할 수 있습니다.

브라우저 측 유효성 검사에만 의존하는 것은 위험합니다. 이러한 검사는 공격자나 봇에 의해 쉽게 우회될 수 있기 때문입니다.

모든 브라우저가 HTML5를 지원하는 것은 아니며 스크립트로 전송된 모든 데이터가 양식에서 나오는 것은 아닙니다. 이는 최종적으로 사용자로부터 데이터를 수락하기 전에 서버 측에서 데이터의 정확성을 확인해야 함을 의미합니다.

추가 처리를 위해 양식 제출 데이터를 가져오기 전에 양식에 대한 입력을 검증하는 것이 매우 중요합니다. 양식에 필드가 많으면 PHP 유효성 검사 스크립트가 너무 복잡해집니다. 더욱이, 작성하는 대부분의 양식에 대해 동일하거나 유사한 검증을 수행하기 때문에 양식 검증에 너무 많은 중복 노력이 소요됩니다.

이 일반 PHP 양식 유효성 검사 스크립트 정보

이 일반 PHP 양식 유효성 검사기 스크립트를 사용하면 양식에 유효성 검사를 추가하는 것이 매우 쉽습니다.

우리는 "검증 설명자" 세트를 생성하고 양식의 각 요소와 연결합니다. "검증 설명자"는 수행할 검증 유형을 지정하는 문자열입니다. 예를 들어 "req"는 필수를 의미하고 "alpha"는 알파벳 문자만 허용한다는 의미입니다.

양식의 각 필드에는 0개, 1개 이상의 유효성 검사가 있을 수 있습니다. 예를 들어 입력은 비어 있어서는 안 되며, 25자 미만이어야 하고, 영숫자 등이어야 합니다.

양식의 각 입력 필드에 대한 검증 설명자 세트를 연결할 수 있습니다.

PHP 양식 유효성 검사 스크립트 다운로드

아래에서 PHP 양식 유효성 검사 스크립트를 다운로드할 수 있습니다.
zip 파일에는 양식 유효성 검사 스크립트 formvalidator.php, 문서 및 사용 샘플이 포함되어 있습니다.

PHP 양식 유효성 검사 스크립트 사용
  • 양식 처리 스크립트에 formvalidator.php를 포함하십시오.
  • require_once "formvalidator.php"
  • FormValidator 개체를 만들고 양식 유효성 검사 설명자를 추가합니다.
  • $validator = 새로운 FormValidator(); $validator->addValidation("이름","req","이름을 입력해주세요"); $validator->addValidation("Email","email", "이메일에 대한 입력은 유효한 이메일 값이어야 합니다."); $validator->addValidation("Email","req","이메일을 입력해주세요");

    첫 번째 인수는 양식의 입력 필드 이름입니다. 두 번째 인수는 필요한 유효성 검사 유형을 알려주는 유효성 검사 설명자입니다. 세 번째 인수는 유효성 검사에 실패할 경우 표시될 오류 메시지입니다.

  • ValidateForm() 함수를 호출하여 양식 유효성을 검사합니다.
  • if(!$validator->ValidateForm()) ( echo "검증 오류:"; $error_hash = $validator->GetErrors(); foreach($error_hash as $inpname => $inp_err) ( echo "

    $inp이름: $inp_err

    \n"; ) ) 예

    아래 예를 보면 아이디어가 더 명확해집니다.

    이름: 이메일:

    사용자 정의 유효성 검사 추가

    유효성 검사 설명자가 제공하지 않는 사용자 정의 유효성 검사를 추가하려는 경우 그렇게 할 수 있습니다. 단계는 다음과 같습니다.

  • 사용자 정의 유효성 검사를 위한 클래스를 만들고 DoValidate() 함수를 재정의합니다.
  • class MyValidator 확장 CustomValidator ( function DoValidate(&$formars,&$error_hash) ( if(stristr($formars["Comments"],"http://")) ( $error_hash["Comments"]="URL이 허용되지 않습니다. 댓글에서 "; false를 반환합니다. ) true를 반환합니다. ) )

  • 사용자 정의 유효성 검사 객체 추가
  • $validator = 새로운 FormValidator(); $validator->addValidation("이름","req","이름을 입력해주세요"); $validator->addValidation("Email","email", "이메일에 대한 입력은 유효한 이메일 값이어야 합니다."); $validator->addValidation("Email","req","이메일을 입력해주세요"); $custom_validator = 새로운 MyValidator(); $validator->AddCustomValidator($custom_validator);

    사용자 정의 유효성 검사 함수는 다른 유효성 검사 후에 자동으로 호출됩니다.

    검증 설명자 표

    모든 유효성 검사 설명자의 목록은 다음과 같습니다.

    검증 설명자용법
    요구필드는 비워둘 수 없습니다.
    맥렌=???입력된 데이터의 길이를 최대로 확인합니다. 예를 들어 허용되는 최대 크기가 25인 경우 유효성 검사 설명자를 "maxlen=25"로 제공합니다.
    민렌=???입력된 문자열의 길이가 필요한 최소값인지 확인합니다. 예: "minlen=5"
    명반데이터에 알파벳이나 숫자 이외의 다른 문자가 포함되어 있는지 확인하십시오.
    alnum_s알파벳, 숫자, 공백 문자만 허용됩니다.
    숫자수치 데이터 확인
    알파알파벳 데이터를 확인하세요.
    alpha_s알파벳 데이터를 확인하고 공백을 허용하십시오.
    이메일해당 필드는 이메일 필드이며 데이터의 유효성을 확인합니다.
    그거=???
    적다=???
    데이터가 전달된 값보다 작은지 확인합니다. 숫자 필드에만 유효합니다.
    예: 값이 1000보다 작아야 하는 경우 유효성 검사 설명을 "lt=1000"으로 제공합니다.
    gt=???
    보다 큼=???
    전달된 값보다 데이터가 큰지 확인합니다. 숫자 필드에만 유효합니다.
    예: 값이 10보다 커야 하는 경우 유효성 검사 설명을 "gt=10"으로 제공합니다.
    정규표현식=???정규식으로 값이 정규식과 일치하는지 확인하세요.
    예: "regexp=^(1.20)$"는 최대 20개의 알파벳 문자를 허용합니다.
    선택하지 마세요=??이 유효성 검사 설명자는 선택 입력 항목(목록)을 위한 것입니다. 일반적으로 선택 목록 상자에는 '하나 선택'이라는 항목이 하나 있습니다. 사용자는 이 옵션이 아닌 다른 옵션을 선택해야 합니다. 이 옵션의 값이 'Select One'인 경우 유효성 검사 설명은 "dontselect=Select One"이어야 합니다.
    선택하지 마세요이 유효성 검사 설명자는 확인란용입니다. 사용자는 체크박스를 선택해서는 안 됩니다. ?? 대신 확인란의 값을 제공하세요.
    예를 들어 dontselectchk=on입니다.
    해야지이 유효성 검사 설명자는 확인란용입니다. 사용자는 주어진 확인란을 선택해야 합니다. ?? 대신 확인란의 값을 제공하세요.
    예를 들어, shouldselchk=on입니다.
    라디오를 선택하지 마세요이 유효성 검사 설명자는 라디오 버튼용입니다. 사용자는 주어진 라디오 버튼을 선택해서는 안됩니다. ?? 대신 라디오 버튼의 값을 제공하세요.
    예를 들어, dontselectradio=NO
    셀렉트라디오이 유효성 검사 설명자는 라디오 버튼용입니다. 사용자는 주어진 라디오 버튼을 선택해야 합니다. ?? 대신 라디오 버튼의 값을 제공하세요.
    예를 들어, selectradio=yes입니다.
    셀민=??확인란 그룹에서 n개 이상의 확인란을 선택합니다.
    예: selmin=3
    혼자라디오 그룹을 필수로 만듭니다. 사용자는 라디오 그룹에서 하나 이상의 항목을 선택해야 합니다.
    eqelmnt=???양식의 두 요소를 비교하고 값이 동일한지 확인하세요. 예를 들어 '비밀번호'와 '비밀번호 확인'. 교체 ??? 다른 입력 요소의 이름으로.
    예: eqelmnt=confirm_pwd

    원칙적으로 이는 쿠키와 같은 다른 방법으로 수신된 데이터에도 적용될 수 있지만 POST 또는 GET 데이터의 유효성 검사에 대해 설명하겠습니다. 웹 애플리케이션을 개발하다 보면 사용자와 상호작용하기 위한 인터페이스를 작성하고 사용자가 서버에 데이터를 보낼 수 있는 다양한 형태를 자연스럽게 생성해야 합니다. 예를 들어 주석이 될 수 있습니다. 수신된 데이터가 유형, 크기, 지정된 범위에 해당하는지 확인해야 한다는 것은 누구에게나 명확하고 당연하다고 생각합니다. 우선, 이는 시스템, 웹사이트 또는 데이터베이스의 보안을 위해 필요합니다. 왜냐하면... 잘못 전송된 데이터나 고의로 잘못된 형식의 요청으로 인해 공격자가 접근할 수 있습니다.

    둘째, 확인되지 않은 데이터가 정확하지 않을 경우 스크립트, 시스템 또는 전체 서버의 작동이 불안정해질 수 있습니다. 따라서 모든 데이터를 확인하고 다시 확인해야하며 누군가는 과도한 편집증이 필요하지 않다고 말할 수도 있지만 이 문제에서는 단순히 과도할 수 없다고 생각합니다.

    어떤 구실로든 어떤 상황에서도 사용자로부터 받은 데이터를 신뢰하지 마십시오. 수신된 데이터를 다시 한 번 확인하는 코드를 작성하기에는 너무 게으르거나 기존 확인 방법으로 충분하기를 바라며 그 결과 우리는 스스로 양보합니다.

    주제에서 약간의 여담 :
    프로젝트 작업, 웹사이트, 스크립트 및 기타 시스템 개발 및 프로그래밍은 근무 시간 외에 거의 모든 여가 시간을 차지합니다. 즉, 하루에 가능한 최대 시간 동안 이 작업을 수행합니다. 때로는 재미로든 아니면 단지 호기심으로든 무언가를 테스트해야 할 때가 있습니다. 결과적으로 수제 엔진이나 고대 버전의 CMS를 사용하여 서둘러 만들어진 사이트는 유사한 테스트 실험실 쥐가 됩니다. 물론 위의 모든 것들은 비뚤어진 코드, 데이터 제어 부족, 다양한 버그로 가득 차 있습니다. 실제로 대부분의 경우 이러한 사이트에서 한 시간 동안 실험을 수행하는 동안 몇 가지 심각한 취약점을 발견했으며 대부분은 수신된 데이터에 대한 유효성이 충분하지 않은 데 있습니다. 최근에는 JavaScript + Ajax에서 받은 POST 데이터를 처리하는 스크립트에서 이러한 현상이 자주 발견되었습니다.

    분명히 Ajax를 사용하여 이러한 스크립트를 작성한 프로그래머는 모든 요청이 사용자 모르게 또는 단순히 페이지를 다시 로드하지 않고 백그라운드에서 발생하므로 데이터를 특별히 확인할 필요가 없다고 생각합니다.

    일반적으로 이러한 스크립트 중 상당수는 구멍이 너무 많아서 많은 노력을 기울이지 않고도 더 큰 구멍을 만들고 껍질을 넘칠 수 있습니다. 물론 실험 목적으로만 사용되며 그 이상은 아닙니다(해당 사이트의 관리팀은 항상 기존 취약점에 대한 정보를 받습니다).

    나는 검증의 중요성이 모든 사람에게 분명하다고 생각합니다. 오랫동안 나는 매번 동일한 코드 조각을 작성한 다음 내 자신의 데이터 확인 기능을 사용했는데, 그 중 많은 기능은 매우 원시적이었고 일반적으로 (포함된) 파일의 여러 부분에 흩어져 있었습니다. 곧 저는 PHP 프레임워크인 Zend, CI, Kohana에 익숙해지기 시작했습니다. 각 프레임워크는 제가 프로젝트를 위해 빌린 데이터의 유효성을 검사하기 위해 자체 클래스를 구현했습니다. 결국 나는 CI 클래스 중 하나를 내 필요에 맞게 조정하기로 결정했지만 프로그래밍 블로그 중 하나의 작성자가 이미 이 문제를 처리한 것으로 나타났습니다. 다음으로 그의 작품, 즉 수정된 CodeIgniter 라이브러리를 공유합니다.

    다음 코드를 살펴보겠습니다.

    코드 보기 PHP

    require_once "validator.class.php" ; $validator = 새로운 유효성 검사기() ; $validator -> set_rules ("name" , "귀하의 이름" , array ("required" => , "alpha" => ) ) ; $validator -> set_rules ("email" , "귀하의 이메일" , array ("required" => "%s 필드가 필요합니다" , "valid_email" => ) ) ; if ($validator -> run () ) ( echo "검증에 성공했습니다" ; ) else ( echo $validator -> get_string_errors () ; )

    예제에서 볼 수 있듯이 첫 번째 줄에는 클래스 파일이 포함되어 있습니다. validator.calss.php우리 스크립트에. 다음으로 클래스의 인스턴스를 만들고 개체를 변수에 저장합니다. $validator.
    그런 다음 방법을 사용하여 $validator->set_rules($field, $label, $rules)유효성 검사를 위한 필드를 설정합니다.

    이 메서드는 3개의 매개변수를 사용합니다.

  • $필드- 유효성 검사 필드의 이름(태그의 이름 속성 값)
  • $라벨- 유효성 검사 필드의 이름이 오류 메시지에 삽입됩니다.
  • $규칙- 유효성 검사 규칙이 키로 사용되고 이 규칙에 대한 오류 메시지가 값으로 사용되는 유효성 검사 규칙의 배열
  • 유효성 검사를 위한 모든 필드가 설정된 후 다음 메서드를 사용하여 유효성 검사기를 시작합니다. $validator->실행(). 유효성 검사가 성공하면 이 메서드는 값을 반환합니다. 진실, 그렇지 않고 오류가 있으면 반환됩니다. 거짓.

    오류 메시지를 받는 방법에는 세 가지가 있습니다.

  • get_string_errors()- 모든 오류 메시지를 문자열로 반환합니다.
  • get_array_errors()— 모든 메시지를 배열로 반환합니다. 여기서 필드 이름은 키로 사용되고 이 필드에 대한 오류 설명은 값으로 사용됩니다.
  • form_error($필드)- $field 매개변수로 전달된 필드에 대한 오류 메시지를 반환합니다.
  • 기본적으로 오류 메시지는 태그로 래핑됩니다. . 디자인을 설정하려면 다음 방법을 사용하십시오. set_error_delimiters($prefix, $suffix). 예를 들면 다음과 같습니다.

    이제 오류 메시지가 다음과 같이 나타납니다. div수업과 함께 "오류"

    보시다시피 모든 것이 매우 간단합니다.

    코드 보기 PHP

    $validator -> set_error_delimiters ( " " , " " ) ;

    유효성 검사 규칙을 설정하려면 다음 방법을 사용할 수 있습니다. set_rules($필드)다차원 연관 배열을 전달합니다. 예를 살펴보겠습니다:

    코드 보기 PHP

    $rules = array ( array ( "field" => "name" , "label" => "귀하의 이름" , "rules" => array ( "required" => "%s 필드가 필요합니다" , "alpha" = > "%s 필드는 문자만 포함해야 합니다." ) , array ( "field" => "email" , "label" => "귀하의 이메일" , "rules" => array ( "required" => "% s 필드는 다음과 같습니다. 필수" , "valid_email" => "%s 필드에는 유효한 이메일 주소가 포함되어 있어야 합니다." ) ) ) ; $validator -> set_rules ($rules ) ;

    보시다시피 첫 번째 예와 동일한 유효성 검사 규칙을 다차원 연관 배열 형식으로만 기록했습니다. 주어진 상황에 가장 적합한 방법을 사용할 수 있습니다.

    그렇다면 이 클래스는 어떤 유효성 검사 규칙을 지원합니까?

    저는 이 수업에서 모든 사람이 접하게 되는 가장 일반적인 유효성 검사 규칙을 가져왔습니다. 다음은 이러한 규칙의 전체 목록입니다.

    필수의필드가 비어 있으면 FALSE를 반환합니다.
    정수값이 정수가 아닌 경우 FALSE를 반환합니다.
    뜨다값이 숫자 값이 아닌 경우 FALSE를 반환합니다.
    유효한_URL값이 유효한 URL이 아닌 경우 FALSE를 반환합니다.
    유효한 이메일값이 유효한 이메일 주소가 아닌 경우 FALSE를 반환합니다.
    유효한_ipIP 주소가 유효하지 않으면 FALSE를 반환합니다.
    성냥요소가 다른 필드 요소의 값과 일치하지 않으면 FALSE를 반환합니다.
    알파요소에 문자 이상의 내용이 포함되어 있으면 FALSE를 반환합니다.
    valid_captcha세션 필드의 값이 양식 필드의 값과 같지 않으면 FALSE를 반환합니다.
    유효한_날짜요소에 유효하지 않은 날짜가 포함되어 있으면 FALSE를 반환합니다.

    이러한 규칙의 대부분은 PHP 5에서 사용할 수 있는 필터를 사용합니다.

    원하는 경우 Validator 클래스에 필요한 기능을 추가하여 항상 유효성 검사 규칙 세트를 확장할 수 있습니다.

    처리된 POST 데이터 값을 얻으려면 다음 방법을 사용하십시오.

    코드 보기 PHP

    일반적으로 이 메서드는 양식 처리에 성공하면 양식을 지우기 위해 호출됩니다.

    모두들 좋은 저녁입니다(밤과 비슷합니다 - 편집자 주). 오늘은 그 부분을 조금 개선해 보겠습니다. 먼저, PHP에서 양식 유효성 검사를 수행하는 방법과 몇 가지 보안 조작을 수행하는 방법을 살펴보겠습니다.

    따라서 아래 코드를 보고 다음 변경 사항과 변경 이유를 확인하세요. 모든 새로운 라인을 색상으로 강조했습니다.

    양식 필드의 이름이 변경되었습니다. 당신은 물을 수 있습니다 – 도대체 이것이 왜 필요한가요? 간단합니다. 답변 드리겠습니다. 내가 아는 한 일부 스팸 봇은 사이트를 샅샅이 뒤져 양식을 찾아 해당 필드의 이름을 기준으로 양식을 작성합니다. 이론적으로는 일치하는 항목을 찾지 못하면 집으로 돌아가는 것이 우리가 원하는 것입니다. 물론 이 보호 수준이 특별히 뛰어나다고 생각하지는 않지만, 우리에게 해를 끼치지는 않을 것이며 스팸 메일이 1글자씩 줄어들면 좋을 것입니다 =).

    이메일 주소가 올바르게 입력되었는지 확인하세요. 17행은 elseif 연산자를 사용합니다. 이는 우리에게 긍정적인 답변이 반환되었는지, 즉 이메일 주소가 전혀 누락되었는지, 즉 입력되지 않았는지 여부를 확인합니다. 여기서는 입력된 주소를 다음과 비교할 수 있는 preg_match 함수를 사용합니다. 정규식. 아마도 나중에 정규식에 대해 간략히 쓸 것이지만 지금은 정규식이 문자열을 검사하는 일종의 템플릿을 생성한다는 점을 알아 두는 것이 좋습니다. 그리고 우리의 경우 입력한 주소가 표현식과 일치하지 않으면 다시 오류가 표시됩니다. 예를 들어, 다음은 몇 가지 정규 표현식입니다.
    |^[-а-яе\s\.,;:\?!]+$|i– 이 정규식을 사용하면 러시아어 알파벳과 공백, 마침표, 쉼표 등 일부 문자만 사용할 수 있습니다.
    #http://[-a-z0-9_.]+[-a-z0-9_:@&?=+,.!/~*'%$]*\.(html?|php)#i– 이 표현을 사용하면 인터넷에서 주소의 철자가 올바른지 확인할 수 있습니다.

    다음으로, 편지를 보내기 위한 모든 코드가 이미 전송된 else 연산자를 사용합니다. 수량에 관계없이 확인 규칙을 직접 만들 수 있으며, 이메일 주소 확인 등의 경우 새 규칙을 추가하면 됩니다.




    담당자:



    이메일 연락처:



    메시지:






    이는 불필요한 작업에 의지하지 않고 PHP 양식의 유효성을 검사할 수 있는 방법입니다. 다음 번에는 양식 주제에 대한 게시물에서 jQuery의 양식 유효성 검사를 고려할 것입니다. 그동안 여러분의 의견과 소망을 기다리고 있습니다. 모두들 좋은 밤 되시고 행복한 아침 되세요 =).

    이 장과 다음 장에서는 PHP를 사용하여 양식 데이터의 유효성을 검사하는 방법을 보여줍니다.

    PHP 양식 유효성 검사

    PHP 양식을 처리할 때 보안을 생각하세요!

    이 페이지에서는 보안을 염두에 두고 PHP 양식을 처리하는 방법을 보여줍니다. 해커와 스팸 발송자로부터 양식을 보호하려면 양식 데이터를 올바르게 검증하는 것이 중요합니다!

    이 장에서 작업하게 될 HTML 양식에는 필수 및 선택 텍스트 필드, 라디오 버튼, 제출 버튼 등 다양한 입력 필드가 포함되어 있습니다.

    위 양식의 유효성 검사 규칙은 다음과 같습니다.

    필드 유효성 검사 규칙
    이름 필수의. + 문자와 공백만 포함해야 합니다.
    이메일 필수의. + 유효한 이메일 주소를 포함해야 합니다(@ 및 .).
    웹사이트 선택 과목. 있는 경우 유효한 URL을 포함해야 합니다.
    논평 선택 과목. 여러 줄 입력 필드(텍스트 영역)
    성별 필수의. 하나를 선택해야 합니다.

    먼저 양식에 대한 일반 HTML 코드를 살펴보겠습니다.

    텍스트 필드

    이름, 이메일, 웹사이트 필드는 텍스트 입력 요소이고 댓글 필드는 텍스트 영역입니다. HTML 코드는 다음과 같습니다:

    이름:
    이메일:
    웹사이트:
    논평:

    라디오 버튼

    성별 필드는 라디오 버튼이며 HTML 코드는 다음과 같습니다.

    성별:
    여성
    남성
    다른

    양식 요소

    양식의 HTML 코드는 다음과 같습니다.