현재 위치: > 최신 기사 목록> Array_diff_ukey ()를 사용하여 프론트 엔드 제출 필드 및 백엔드 필드 매핑 확인을 구현하십시오.

Array_diff_ukey ()를 사용하여 프론트 엔드 제출 필드 및 백엔드 필드 매핑 확인을 구현하십시오.

M66 2025-06-06

프론트 엔드 분리 전송에서 프론트 엔드는 일반적으로 데이터를 JSON 형식의 백엔드로 제출합니다. 데이터 무결성 및 보안을 보장하기 위해 백엔드는 이러한 필드가 예상 필드와 일치하는지 확인해야합니다. PHP의 array_diff_ukey () 함수는이를 우아하게 달성하는 데 도움이 될 수 있습니다.

이 기사는 간단한 예제를 사용하여 Array_diff_ukey ()를 사용하여 프론트 엔드에서 제출 한 필드와 백엔드가 허용하는 필드를 비교하여 불일치 한 주요 이름을 찾는 방법을 설명합니다.

1. array_diff_ukey () 소개

Array_diff_ukey () 는 두 배열의 주요 이름을 비교하고 비교를 위해 사용자 정의 콜백 함수를 사용하는 PHP 내장 함수입니다. 첫 번째 배열에 나타나지 만 두 번째 배열에는 그렇지 않은 키 이름에 해당하는 값을 반환합니다.

기능 프로토 타입 :

 array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array

2. 응용 시나리오 : 필드 매핑 확인

백엔드가 다음 필드 만 받기를 원한다고 가정합니다.

 $allowedFields = [
    'username' => true,
    'email' => true,
    'age' => true,
];

프론트 엔드는 다음 데이터를 제출했습니다.

 $submittedData = [
    'username' => 'alice',
    'email' => 'alice@example.com',
    'age' => 25,
    'is_admin' => true, // 불법 분야
];

우리는 "is_admin" 이 불법 분야라는 것을 감지해야합니다.

3. Array_diff_ukey ()를 사용하여 불법 필드를 확인하십시오

 <?php

$allowedFields = [
    'username' => true,
    'email' => true,
    'age' => true,
];

$submittedData = [
    'username' => 'alice',
    'email' => 'alice@example.com',
    'age' => 25,
    'is_admin' => true,
];

// 사용 array_diff_ukey 필드 비교를 수행하십시오
$invalidFields = array_diff_ukey(
    $submittedData,
    $allowedFields,
    function($key1, $key2) {
        return strcmp($key1, $key2);
    }
);

if (!empty($invalidFields)) {
    echo "检测到불법 분야:\n";
    foreach ($invalidFields as $field => $value) {
        echo "- $field: $value\n";
    }

    // 로그를 기록하거나 오류 메시지를 반환 할 수 있습니다.
    // 샘플 로그 인터페이스 호출(의사 코드):
    $logUrl = 'https://api.m66.net/logs/invalid-fields';
    // sendToApi($logUrl, ['fields' => array_keys($invalidFields)]);
} else {
    echo "필드 검증이 통과되었습니다。\n";
}

4. 확장자 :지도 필드 이름

프론트 엔드 필드 이름이 백엔드 (예 : 낙타 vs 밑줄과 같은)와 일치하지 않으면 필드 매핑 테이블과 함께 사용할 수 있습니다.

 $fieldMap = [
    'userName' => 'username',
    'emailAddress' => 'email',
    'userAge' => 'age',
];

// 확인을 위해 맵 테이블을 뒤집습니다
$mappedKeys = array_flip($fieldMap);

// 시뮬레이션 제출
$submittedData = [
    'userName' => 'alice',
    'emailAddress' => 'alice@example.com',
    'userAge' => 25,
    'adminStatus' => true,
];

$invalidFields = array_diff_ukey(
    $submittedData,
    $mappedKeys,
    'strcmp'
);

if (!empty($invalidFields)) {
    echo "다음 필드는 매핑 테이블에 정의되어 있지 않습니다.:\n";
    print_r(array_keys($invalidFields));
} else {
    echo "필드 매핑 검증이 통과되었습니다。\n";
}

5. 요약

Array_diff_ukey ()를 사용하면 프론트 엔드가 전달한 불법 필드 또는 매핑 테이블에 정의되지 않은 필드를 빠르게 찾을 수 있습니다. 이것은 불법 데이터 주입을 방지 할뿐만 아니라 필드 검증 로직을 단순화합니다. 프로젝트의 유지 관리 및 보안을 향상시키기위한 일반적인 양식 검증 도구 방법으로 캡슐화하는 것이 좋습니다.