현재 위치: > 최신 기사 목록> Custom Extension get_client_version은 더 많은 클라이언트 정보를 지원합니다

Custom Extension get_client_version은 더 많은 클라이언트 정보를 지원합니다

gitbox 2025-05-11

웹 응용 프로그램을 개발할 때 클라이언트의 세부 사항을 이해하면보다 세분화 된 기능 적응, 보안 검증 및 사용자 행동 분석을 수행하는 데 도움이 될 수 있습니다. PHP는 기능을 통해 클라이언트의 사용자 에이전트를 구문 분석 할 수있는 유연한 서버 측 언어이지만 사용자 정의 된 get_client_version 함수를 통해보다 강력하고 확장 가능한 클라이언트 정보 추출 기능을 구현할 수도 있습니다.

1. 기본 아이디어

get_client_version 함수의 핵심 목적은 클라이언트 유형 (예 : 브라우저, 운영 체제, 장치 유형) 및 요청 헤더에서 버전 정보를 추출하는 것입니다. 우리는 $ _server [ 'http_user_agent']를 구문 분석하고 사용자 정의 확장 규칙로드를 지원하여이를 구현할 것입니다.

2. 기능 구현

다음은 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;
}

3. 예제를 사용하십시오

 $client_info = get_client_version();

// 출력 클라이언트 정보
echo '<pre>';
print_r($client_info);
echo '</pre>';

4. 사용자 정의 확장을 지원합니다

엔터프라이즈 내 맞춤형 응용 프로그램 클라이언트 또는 일부 특수 브라우저 쉘과 같은 사용자 정의 규칙을 전달하여 독점 클라이언트 특성을 감지 할 수 있습니다.

 $custom_rules = [
    'MyAppClient' => '/MyApp\/([0-9\.]+)/'
];

$client_info = get_client_version(null, $custom_rules);

// 출력 클라이언트 정보,사용자 정의 컨텐츠를 포함하십시오
echo '<pre>';
print_r($client_info);
echo '</pre>';

V. 일반적인 응용 프로그램 시나리오

  1. 사용자 분석 : 통계 사용자가 사용하는 브라우저 및 버전 배포.

  2. 기능적 호환성 처리 : 호환성 최적화는 다른 브라우저 또는 시스템에 대해 이루어집니다.

  3. 보안 정책 : 지원되지 않는 클라이언트를 식별하고 액세스를 금지합니다.

  4. API 제한 : 특정 클라이언트가 클라이언트 정보를 기반으로 특정 인터페이스를 호출하도록 제한합니다.

VI. 배포 제안

  • 프로젝트의 공개 입구에서 get_client_version을 호출하고 결과를 $ _session 또는 로깅으로 캐시하는 것이 좋습니다.

  • 높은 동시성 환경의 경우 반복 된 구문 분석을 피하기 위해 Redis 또는 파일 캐시를 결합하는 것이 좋습니다.

7. 참조 링크