현재 위치: > 최신 기사 목록> get_client_version이 get_browser ()와 결합하여보다 정확한 식별을 달성합니다

get_client_version이 get_browser ()와 결합하여보다 정확한 식별을 달성합니다

gitbox 2025-05-08

웹 개발에서 클라이언트 이해 (브라우저, 운영 체제 등) 정보는 다른 환경에 디버깅 및 적응하는 데 매우 중요합니다. PHP는 사용자의 브라우저 및 특성을 식별하는 데 사용할 수있는 get_browser () 함수와 함께 제공되지만 정확도는 Browserscap.ini 파일의 업데이트 빈도에 영향을받으며 때로는 모든 요구를 충족시킬 수는 없습니다.

클라이언트 버전 정보를보다 정확하게 식별하려면 get_client_version 함수를 사용자 정의하여 get_browser () 와 함께 사용할 수 있습니다. 다음은이를 구현하는 방법에 대해 자세히 설명합니다.

1. 환경 준비

먼저 Browsercap이 PHP 구성에서 활성화되어 있는지 확인하고 최신 Browsercap.ini 파일을 가리 킵니다.

php.ini 에서 구성 :

 browscap = "https://gitbox.net/path/to/browscap.ini"

물론 실제 배포 중에 Browser.ini를 로컬 서버로 다운로드하고 모든 요청마다 원격 액세스를 피하기 위해 로컬 경로로 구성하는 것이 좋습니다.

2. 기본 구현

다음은 PHP에서 구현하는 방법에 대한 간단한 예입니다.

 <?php

/**
 * 클라이언트 버전 정보를 얻으십시오
 *
 * @return array
 */
function get_client_version() {
    $userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
    $browserInfo = get_browser(null, true);

    $clientData = [
        'browser' => $browserInfo['browser'] ?? 'Unknown',
        'version' => $browserInfo['version'] ?? 'Unknown',
        'platform' => $browserInfo['platform'] ?? 'Unknown',
        'user_agent' => $userAgent,
    ];

    // 특정 특수 상황에 대한 보충 테스트,예를 들어, 모바일
    if (stripos($userAgent, 'iPhone') !== false) {
        $clientData['device'] = 'iPhone';
    } elseif (stripos($userAgent, 'Android') !== false) {
        $clientData['device'] = 'Android';
    } else {
        $clientData['device'] = 'Desktop';
    }

    return $clientData;
}

// 전화 예제
$clientInfo = get_client_version();

echo '<pre>';
print_r($clientInfo);
echo '</pre>';
?>

3. 식별을 추가로 최적화하십시오

때로는 get_browser () 에서 얻은 정보가 비교적 거칠다. 정규 표현식을 결합하여 WeChat 브라우저 식별, 미니 프로그램, Douyin 브라우저 등과 같은 사용자 에이전트의 2 차 분석을 수행 할 수 있습니다.

 <?php

/**
 * 클라이언트 버전의보다 정확한 식별,구체적으로 포함하십시오App내장 브라우저
 *
 * @return array
 */
function get_client_version() {
    $userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
    $browserInfo = get_browser(null, true);

    $clientData = [
        'browser' => $browserInfo['browser'] ?? 'Unknown',
        'version' => $browserInfo['version'] ?? 'Unknown',
        'platform' => $browserInfo['platform'] ?? 'Unknown',
        'user_agent' => $userAgent,
        'device' => 'Desktop',
        'app' => 'None'
    ];

    if (stripos($userAgent, 'iPhone') !== false) {
        $clientData['device'] = 'iPhone';
    } elseif (stripos($userAgent, 'Android') !== false) {
        $clientData['device'] = 'Android';
    }

    // 특별한 탐지App내장 브라우저
    if (stripos($userAgent, 'MicroMessenger') !== false) {
        $clientData['app'] = 'WeChat';
    } elseif (stripos($userAgent, 'Douyin') !== false) {
        $clientData['app'] = 'Douyin';
    } elseif (stripos($userAgent, 'miniProgram') !== false) {
        $clientData['app'] = 'MiniProgram';
    }

    return $clientData;
}

// 전화 예제
$clientInfo = get_client_version();

echo '<pre>';
print_r($clientInfo);
echo '</pre>';
?>

4. 주목할만한 것들

  • get_browser ()는 browserscap.ini 파일에 따라 다릅니다. 정기적으로 업데이트해야합니다. 그렇지 않으면 인식 결과가 구식 일 수 있습니다.

  • 사용자는 사용자 에이전트를 위조 할 수 있으므로 이러한 인식 방법은 최적화 경험에만 적합하며 보안 검증에만 적합합니다.

  • 더 복잡한 식별이 필요한 경우 (예 : 내부 및 외부 브라우저를 구별하는 등) Whetbrowser/Parser 와 같은 타사 라이브러리와 함께 더욱 향상 될 수 있습니다.

5. 요약

php의 get_browser () 함수를 사용자 정의 get_client_version logic과 결합하면 클라이언트 인식의 정확성과 유연성을 효과적으로 향상시킬 수 있습니다. 특히 모바일 인터넷 환경에서는 장치 및 앱 환경을 정확하게 식별하고 사용자 경험 및 기능 적응을 크게 최적화 할 수 있습니다.