이것은 내가 보고 싶은 더 많은 줄을 작성한 매우 기본적인 예입니다. 첫째, $_GET이 무엇으로 설정되어 있는지 확인할 수 없기 때문에 코드는 스크립트가 넘어지지 않도록 적절한 검사를 수행합니다. 두 번째는 USD 값이 $_GET 값에서 직접 지정되었기 때문에 이제 "더러운" 변수라는 사실입니다. 문제가 발생할 경우를 대비하여 코드의 다른 곳에서 달러 값을 사용하지 않도록 주의해야 합니다. 그러면 16.0에서는 다양한 모달 파티클 때문에 is_numeric() 함수가 유효하다는 문제가 있습니다. 마지막으로, 명령문을 입 밖으로 꺼내면 코드 추적을 통해 작업할 때 추가 논리가 전달된다는 사실을 처리해야 합니다. 이제 위의 예를 비교해 보세요.
따뜻하고 포근한 느낌이 들지 않나요? filter_input()에서 처리하는 $_GET 값은 설정되지 않으므로 스크립트가 올바른 정보를 받고 있는지 여부에 대해 강조할 필요가 없습니다. 또한 할당되기 전에 확인되었으므로 달러 가치가 더러워지는 것에 대해 걱정할 필요가 없습니다. 현재 버전 16.0은 더 이상 유효하지 않습니다. 마지막으로 우리의 논리는 더 이상 복잡하지 않습니다. 이것은 진실한 값을 빠르게 확인하는 것입니다. (filter_input()은 유효성 검사에 실패하면 false를 반환하고 $_GET["value"]가 설정되지 않으면 null을 반환합니다. 분명히 실제 환경에서는 구성 파일에 저장된 변수 배열을 어딘가에 추출하여 비즈니스 로직에 들어가지 않고도 변경할 내용을 얻을 수 있다는 점은 분명합니다. 아주 멋진! 이제 간단한 스크립트에서 몇 개의 $_GET 또는 $_POST 변수를 가져오는 것이 유용할 것이라고 생각할 수도 있지만 내부적으로 함수나 클래스를 사용하는 것은 어떻습니까? 다행히 filter_var()가 있습니다. filter_var() 함수는 filter_input()과 동일한 작업을 수행하기 위해 도입되었습니다.
위의 질문을 포함하여 많은 예가 사용되었으며 이는 기본입니다. filter_var() 또는 filter_input()을 기본 검사 이외의 용도로 사용할 수 없다고 생각할 수도 있습니다. 그리고 FILTER_CALLBACK이라는 함수에 필터를 전달할 수 있습니다. FILTER_CALLBACK을 사용하면 필터링되는 변수를 허용하는 생성한 변수를 전달할 수 있습니다. 여기에서 시작할 수 있습니다. 왜냐하면 많은 즐거움을 누리기 위해 자신만의 비즈니스 논리를 필터링에 적용하기 시작할 수 있기 때문입니다. 몇 가지 잠재적인 함정 이러한 기능은 정말 훌륭하며 코드의 보안과 안정성을 향상시키는 데 도움이 될 수 있는 매우 강력한 필터링을 수행할 수 있게 해줍니다. 하지만 몇 가지 잠재적인 단점이 있는데, 이를 지적하지 않으면 아쉬운 느낌이 들 것입니다. 주요 결함은 필터가 해당 기능에 적용되는 한입니다. 이메일 검증을 사용한 마지막 예 - 5.2.14와 5.3.3 FILTER_VALIDATE_EMAIL 사이에서 변경되는 이메일 주소를 처리하는 방법, 동일한 버전의 PHP를 실행하는 모든 애플리케이션이 기술적으로 유효한 이메일 주소를 가지고 있다고 가정하더라도 아마도 원하지 않을 것입니다. 어떤 필터를 사용하고 있는지 확인하세요. 두 번째 함정은 사람들이 필터를 넣으면 코드가 안전하다고 생각한다는 것입니다. 필터링된 변수는 도움이 되지만 코드를 남용으로부터 100% 안전하게 만들 수는 없습니다. 이에 대해 이야기하고 싶지만 이는 이 기사의 범위를 벗어나며 내 단어 수가 이미 상당히 많습니다! 요약: 코드에서 하나의 함수만 만들고 다른 데이터 유형과 다른 값을 전달하면 어떤 일이 발생하는지 확인한다고 생각합니다. 그런 다음 여기에 설명된 필터링 방법 중 일부를 적용하여 코드 성능에 차이가 있는지 확인하시기 바랍니다. 귀하의 의견에 대해 어떻게 생각하시는지 알고 싶습니다. |