PHP를 사용한 간단한 동적 양식 유효성 검사 기능

27320 단어 phpjavascripthtmlmysql
원래 게시된 @https://codeanddeploy.com 방문하여 샘플 코드 다운로드: https://codeanddeploy.com/blog/php/simple-dynamic-form-validation-function-using-php

이 튜토리얼에서는 Laravel 유효성 검사와 동일한 구문을 가진 PHP를 사용하여 간단한 동적 양식 유효성 검사 함수를 코딩합니다. 유효성 검사는 데이터베이스에 저장하기 전에 가장 중요한 것 중 하나라는 것을 알고 있습니다. 예를 들어 컬럼의 크기가 100자까지만 허용되는데 최대 글자 수를 확인하지 않고 사용자가 100자를 넘게 입력하면 저장된 데이터가 잘립니다.

이 기능의 기본 기능은 다음과 같습니다.


  • 필수 - 필드를 필수로 설정하고 입력된 값이 없으면 계속하지 않음
  • 이메일 - 유효한 이메일인 경우 필드를 선택하십시오
  • .
  • 고유 - 데이터베이스 테이블에 고유한 값인지 필드를 확인합니다(값이 테이블에 아직 존재하지 않는지 확인하는 데 유용함)
  • Max - 필드 최대 길이 확인
  • 최소 - 필드 최소 길이를 확인합니다
  • .

    이 기능을 사용하는 방법?



    이 기능을 사용하는 방법에 대한 아래 코드를 확인하십시오.

    // Validate the data
    $validation = validate($_REQUEST, [
        'email' => 'required|email|unique:employees|min:2|max:100',
        'first_name' => 'required|min:2|max:100',
        'last_name' => 'required|min:2|max:100',
        'address' => 'required|min:2|max:250'
    ]);
    


    위에서 볼 수 있듯이 다음과 같은 매개변수를 사용하여 validate() 함수를 호출합니다.

    function validate($input, $rules) {}
    


    $input - 배열 타입으로 $_REQUEST, $_POST Super Global 변수에 적합합니다. 다음은 배열의 샘플 형식입니다.

    Array
    (
        [email] => email@gmail.com
        [first_name] => Ronard
        [last_name] => Cauba
        [address] => Dumaguete City, Negros Oriental, Philippines
    )
    


    $rules - 필드 유효성 검사 값이 있는 배열 유형입니다. 아래는 샘플 배열 값입니다.

    [
        'email' => 'required|email|unique:employees|min:2|max:100',
        'first_name' => 'required|min:2|max:100',
        'last_name' => 'required|min:2|max:100',
        'address' => 'required|min:2|max:250'
    ]
    


    유효성 검사 구문



    $input 매개변수의 필드 이름인 배열 키 이름과 $rules 매개변수의 배열 키 이름은 동일해야 합니다. $input 및 $rules 매개변수에 대한 위의 예를 볼 수 있습니다.

    필수 구문 - 필드가 필수인 경우 필드 이름과 함께 $rules 매개변수에 "required"를 추가해야 합니다. 예를 들면 다음과 같습니다.

    [
    ..
        'email' => 'required'
    ..
    ]
    


    이메일 구문 - 이메일이 유효한지 필드의 유효성을 검사해야 하는 경우 필드 이름과 함께 $rules 매개변수에 "email"을 추가해야 합니다. 예를 들면 다음과 같습니다.

    [
    ..
        'email' => 'required|email'
    ..
    ]
    


    참고: 보시다시피 이제 이메일 필드에 대해 필수 및 이메일 유효성 검사가 있습니다. 따라서 구분 기호 "|"가 필요합니다. (바 라인)

    고유 구문 - 필드가 테이블에 대해 고유한 값이어야 하는 경우 "unique:{table_name}"을 추가해야 하므로 테이블 이름이 "users"인 경우 다음과 같아야 합니다.

    [
    ..
        'email' => 'unique:users'
    ..
    ]
    


    최소 구문 - 필드에 최소 문자 수가 있는 경우 "min:{minimum_number}"를 추가해야 합니다. 아래 샘플 코드는 다음과 같습니다.

    [
    ..
        'email' => 'min:10'
    ..
    ]
    
    


    최대 구문 - 필드에 최대 문자 수가 있는 경우 "max:{maximum_number}"를 추가해야 합니다. 아래 샘플 코드는 다음과 같습니다.

    [
    ..
        'email' => 'max:100'
    ..
    ]
    


    완벽한 양식 유효성 검사 기능



    이제 양식에 대한 기본 유효성 검사가 있습니다. 이제 나는 당신이 사용할 수 있는 완전한 함수 소스 코드를 제공할 것입니다.

    첫째, config.php
    <?php
        //set the servername
        define("SERVER_NAME", "localhost");
        //set the server username
        define("SERVER_UNAME", "root");
        // set the server password (you must put password here if your using live server)
        define("SERVER_UPASS", "");
        // set the table name
        define("SERVER_DB", "demos");
    
        // Include functions file
        require_once 'functions.php';
    
        // Connect to database
        $db = connectDB();
    ?>
    


    둘째, functions.php
    <?php
    
        function connectDB() 
        {
            $db = new mysqli(SERVER_NAME, SERVER_UNAME, SERVER_UPASS, SERVER_DB);
    
            if ($db->connect_errno) {
              echo "Failed to connect to MySQL: " . $db->connect_error;
              exit();
            }
    
            return $db;
        }
    
        function validate($input, $rules) 
        {
            $errors = [];
    
            if(is_array($input)):
                foreach($rules as $fieldName=>$value):
                    $fieldRules = explode("|", $value);
    
                    foreach($fieldRules as $rule):
    
                        $ruleValue = _getRuleSuffix($rule);
                        $rule = _removeRuleSuffix($rule);
    
                        if($rule == "required" && isEmptyFieldRequired($input, $fieldName)):
                            $errors[$fieldName]['required'] = _removeUnderscore(ucfirst($fieldName)) . " field is required.";
                        endif;
    
                        if($rule == "email" && !isEmailValid($input, $fieldName)):
                            $errors[$fieldName]['email'] = _removeUnderscore(ucfirst($fieldName)) . " field is invalid.";
                        endif;
    
                        if($rule == "min" && isLessThanMin($input, $fieldName, $ruleValue)):
                            $errors[$fieldName]['max'] = _removeUnderscore(ucfirst($fieldName)) . " field is less than " . $ruleValue . " characters of the minimum length.";
                        endif;
    
                        if($rule == "max" && isMoreThanMax($input, $fieldName, $ruleValue)):
                            $errors[$fieldName]['max'] = _removeUnderscore(ucfirst($fieldName)) . " field is more than " . $ruleValue . " characters of the maximum length.";
                        endif;
    
                        if($rule == "unique" && !isRecordUnique($input, $fieldName, $ruleValue)):
                            $errors[$fieldName]['unique'] = _removeUnderscore(ucfirst($fieldName)) . " field is already exists.";
                        endif;
    
                    endforeach;
                endforeach;
            endif;
    
            return $errors;
    
        }
    
        function isEmptyFieldRequired($input, $fieldName) 
        {
            return $input[$fieldName] == "" || empty($input[$fieldName]);
        }
    
        function isLessThanMin($input, $fieldName, $value) 
        {
            return strlen($input[$fieldName]) < $value; 
        }
    
        function isMoreThanMax($input, $fieldName, $value) 
        {
            return strlen($input[$fieldName]) > $value;
        }
    
        function isRecordUnique($input, $fieldName, $value) 
        {   
            // Connect to database
            $db = connectDB();
    
            // SQL Statement
            $sql = "SELECT * FROM ".$value." WHERE ".$fieldName."='".$input[$fieldName]."'";
    
            // Process the query
            $results = $db->query($sql);
    
            // Fetch Associative array
            $row = $results->fetch_assoc();
    
            // Close db connection
            $db->close();
    
            // If the result is not array so the record is unique
            return !is_array($row);
        }
    
        function isEmailValid($input, $fieldName) 
        {
            $email = $input[$fieldName];
    
            if(!empty($email) || $email != ""):
                return (!preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $email)) ? FALSE : TRUE;
            else:
                return TRUE;
            endif;
        }
    
    
        function _removeUnderscore($string) 
        {
            return str_replace("_", " ", $string);
        }
    
        function _removeRuleSuffix($string) 
        {
            $arr = explode(":", $string);
    
            return $arr[0];
        }
    
        function _getRuleSuffix($string) 
        {
            $arr = explode(":", $string);
    
            return isset($arr[1])?$arr[1]:null;
        }
    
    ?>
    


    셋째, 코드 구현

    <?php
        // include config file
        require_once 'config.php';
    
        // Validate the data
        $validation = validate($_REQUEST, [
            'email' => 'required|email|unique:employees|min:2|max:100',
            'first_name' => 'required|min:2|max:100',
            'last_name' => 'required|min:2|max:100',
            'address' => 'required|min:2|max:250'
        ]);
    
        // Defined $result as array
        $result = [];
    
        // Check if no validation errors
        if(!count($validation)):
           //do something here
        else:
           //do something here to display the errors
           $result['has_error'] = 1;
           $result['errors'] = $validation;
        endif;
    
        // Encode array into json format (this is useful if your using ajax)
        echo json_encode($result);
    ?>
    


    넷째, 에러가 발생했을 때의 결과.



    이상입니다. 이 기본 기능이 양식 유효성 검사를 동적으로 도울 수 있기를 바랍니다. 이 자습서가 도움이 되기를 바랍니다. 이 코드를 다운로드하려면 여기https://codeanddeploy.com/blog/php/simple-dynamic-form-validation-function-using-php를 방문하십시오.

    참고: 이 튜토리얼에서는 ajax를 사용하므로 ajax 기능이 아닌 기능에 맞게 코드를 조정하면 됩니다.

    읽어 주셔서 감사합니다. 행복한 코딩 :)

    좋은 웹페이지 즐겨찾기