웹 응용 프로그램을 개발할 때 클라이언트의 세부 사항을 이해하면보다 세분화 된 기능 적응, 보안 검증 및 사용자 행동 분석을 수행하는 데 도움이 될 수 있습니다. PHP는 기능을 통해 클라이언트의 사용자 에이전트를 구문 분석 할 수있는 유연한 서버 측 언어이지만 사용자 정의 된 get_client_version 함수를 통해보다 강력하고 확장 가능한 클라이언트 정보 추출 기능을 구현할 수도 있습니다.
get_client_version 함수의 핵심 목적은 클라이언트 유형 (예 : 브라우저, 운영 체제, 장치 유형) 및 요청 헤더에서 버전 정보를 추출하는 것입니다. 우리는 $ _server [ 'http_user_agent']를 구문 분석하고 사용자 정의 확장 규칙로드를 지원하여이를 구현할 것입니다.
다음은 get_client_version 함수 구현의 기본 버전이며 사용자 정의 확장을로드하는 것을 지원합니다.
function get_client_version($user_agent = null, $custom_rules = []) {
if (is_null($user_agent)) {
$user_agent = $_SERVER['HTTP_USER_AGENT'] ?? '';
}
$clients = [
'Chrome' => '/Chrome\/([0-9\.]+)/',
'Firefox' => '/Firefox\/([0-9\.]+)/',
'Safari' => '/Version\/([0-9\.]+).*Safari/',
'Edge' => '/Edg\/([0-9\.]+)/',
'Opera' => '/OPR\/([0-9\.]+)/',
'Internet Explorer' => '/MSIE\s([0-9\.]+);/',
'Windows' => '/Windows NT ([0-9\.]+)/',
'macOS' => '/Mac OS X ([0-9_\.]+)/',
'iOS' => '/iPhone OS ([0-9_\.]+)/',
'Android' => '/Android ([0-9\.]+)/',
];
// 맞춤 규칙을 병합하십시오
if (!empty($custom_rules) && is_array($custom_rules)) {
$clients = array_merge($clients, $custom_rules);
}
$result = [];
foreach ($clients as $name => $pattern) {
if (preg_match($pattern, $user_agent, $matches)) {
$result[$name] = str_replace('_', '.', $matches[1]);
}
}
return $result;
}
$client_info = get_client_version();
// 출력 클라이언트 정보
echo '<pre>';
print_r($client_info);
echo '</pre>';
엔터프라이즈 내 맞춤형 응용 프로그램 클라이언트 또는 일부 특수 브라우저 쉘과 같은 사용자 정의 규칙을 전달하여 독점 클라이언트 특성을 감지 할 수 있습니다.
$custom_rules = [
'MyAppClient' => '/MyApp\/([0-9\.]+)/'
];
$client_info = get_client_version(null, $custom_rules);
// 출력 클라이언트 정보,사용자 정의 컨텐츠를 포함하십시오
echo '<pre>';
print_r($client_info);
echo '</pre>';
사용자 분석 : 통계 사용자가 사용하는 브라우저 및 버전 배포.
기능적 호환성 처리 : 호환성 최적화는 다른 브라우저 또는 시스템에 대해 이루어집니다.
보안 정책 : 지원되지 않는 클라이언트를 식별하고 액세스를 금지합니다.
API 제한 : 특정 클라이언트가 클라이언트 정보를 기반으로 특정 인터페이스를 호출하도록 제한합니다.
프로젝트의 공개 입구에서 get_client_version을 호출하고 결과를 $ _session 또는 로깅으로 캐시하는 것이 좋습니다.
높은 동시성 환경의 경우 반복 된 구문 분석을 피하기 위해 Redis 또는 파일 캐시를 결합하는 것이 좋습니다.
사용자 에이전트 정보는 MDN의 문서를 찾을 수 있습니다 : https://developer.mozilla.org/
더 많은 브라우저 식별자 : https://www.useragentstring.com/