웹 응용 프로그램을 개발할 때 양식 검증은 사용자 입력 데이터의 유효성을 보장하는 중요한 단계입니다. 데이터 형식을 확인하는 것 외에도, 특히 민감한 데이터 업데이트와 관련하여 사용자가 원래 데이터를 수정했는지 여부를 결정해야합니다. PHP는 유용한 기능 array_diff_assoc () 을 제공하여 두 배열의 차이를 결정한 다음 사용자가 원래 데이터를 조작했는지 확인하는 데 도움이 될 수 있습니다.
Array_Diff_Assoc () 함수는 두 배열의 차이를 계산하는 데 사용됩니다. 두 배열의 주요 이름과 키 값을 비교합니다. 배열의 키 이름 또는 키 값이 변경되면 함수는 이러한 차이를 반환합니다. 이 기능은 Array_Diff_Assoc ()가 사용자가 양식 검증에서 데이터를 수정하는지 여부를 결정하기위한 이상적인 선택입니다.
array_diff_assoc(array $array1, array $array2)
Array1 : 첫 번째 배열.
Array2 : 첫 번째 배열과 비교하는 데 사용되는 두 번째 배열.
이 함수는 키 이름과 값이 다른 요소가 반환되는 차이를 포함하는 배열을 반환합니다.
사용자 편집 양식이 있고 원래 데이터가 데이터베이스에 저장되어 있다고 가정합니다. 사용자가 양식을 제출하면 사용자가 원래 데이터를 수정했는지 확인하려고합니다. 이를 위해 사용자가 제출 한 양식 데이터를 원래 데이터와 비교할 수 있습니다. 차이가 발견되면 사용자가 데이터를 수정했음을 의미합니다.
<?php
// 원시 데이터(데이터베이스에서 검색되었다고 가정하십시오)
$original_data = [
'username' => 'john_doe',
'email' => 'john@example.com',
'age' => 30
];
// 사용자 제출 양식 데이터
$form_data = [
'username' => 'john_doe', // 수정되지 않았다고 가정하십시오
'email' => 'john_new@example.com', // 사용자는 이메일 주소를 수정했습니다
'age' => 30
];
// 사용 array_diff_assoc() 데이터 비교
$diff = array_diff_assoc($original_data, $form_data);
if (empty($diff)) {
echo "用户未修改원시 데이터。";
} else {
echo "사용자는 데이터를 수정했습니다: ";
print_r($diff);
}
?>
사용자는 데이터를 수정했습니다:
Array
(
[email] => john_new@example.com
)
이 예에서는 원본 데이터가 $ original_data 배열에 저장되어 있다고 가정하고 $ form_data 배열에는 사용자가 제출 한 양식 데이터가 포함되어 있다고 가정합니다. array_diff_assoc () 함수를 호출하면 이메일 필드의 차이를 감지하여 사용자가 사서함을 수정했음을 나타냅니다.
정확도 : Array_Diff_Assoc ()는 주요 이름을 비교할뿐만 아니라 주요 값을 비교합니다. 따라서 키 이름이나 키 값이 변경된 경우에만 차이를 반환합니다.
단순성 :이 기능은 배열을 수동으로 통과하지 않고 배열 간의 차이를 직관적으로 찾을 수 있습니다.
보안 : 이런 식으로, 우리는 사용자가 양식의 숨겨진 필드를 조작하거나 원래 데이터를 직접 수정하는 것을 방지 할 수 있습니다.
비밀번호 수정 양식 : 사용자가 암호를 변경하면 원래 비밀번호를 제출 된 비밀번호와 비교하여 사용자가 암호 이외의 콘텐츠를 수정하지 않았는지 확인할 수 있습니다.
계정 정보 수정 : 예를 들어, 이메일 주소, 사용자 이름 수정 등 사용자가 수정하려는 부품 만 수정했는지 여부를 결정하고 불필요한 수정을 피할 수 있습니다.
데이터 감사 : 사용자 작업을 녹화 해야하는 일부 시스템에서는 사용자가 수정 한 데이터를 Array_Diff_Assoc () 를 통해 기록하여 후속 감사를 용이하게 할 수 있습니다.
Array_Diff_Assoc () 함수를 통해 개발자는 사용자가 양식으로 데이터를 수정했는지 쉽게 결정할 수 있습니다. 양식 검증에서의 적용은 시스템의 보안을 효과적으로 증가시키고 데이터 변조 및 기타 잠재적 보안 위험을 피할 수 있습니다. 민감한 데이터로 작업하는 경우이 방법을 사용하여 데이터의 무결성을 보장하는 것이 좋습니다.