웹 개발에서 클라이언트 이해 (브라우저, 운영 체제 등) 정보는 다른 환경에 디버깅 및 적응하는 데 매우 중요합니다. PHP는 사용자의 브라우저 및 특성을 식별하는 데 사용할 수있는 get_browser () 함수와 함께 제공되지만 정확도는 Browserscap.ini 파일의 업데이트 빈도에 영향을받으며 때로는 모든 요구를 충족시킬 수는 없습니다.
클라이언트 버전 정보를보다 정확하게 식별하려면 get_client_version 함수를 사용자 정의하여 get_browser () 와 함께 사용할 수 있습니다. 다음은이를 구현하는 방법에 대해 자세히 설명합니다.
먼저 Browsercap이 PHP 구성에서 활성화되어 있는지 확인하고 최신 Browsercap.ini 파일을 가리 킵니다.
php.ini 에서 구성 :
browscap = "https://gitbox.net/path/to/browscap.ini"
물론 실제 배포 중에 Browser.ini를 로컬 서버로 다운로드하고 모든 요청마다 원격 액세스를 피하기 위해 로컬 경로로 구성하는 것이 좋습니다.
다음은 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>';
?>
때로는 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>';
?>
get_browser ()는 browserscap.ini 파일에 따라 다릅니다. 정기적으로 업데이트해야합니다. 그렇지 않으면 인식 결과가 구식 일 수 있습니다.
사용자는 사용자 에이전트를 위조 할 수 있으므로 이러한 인식 방법은 최적화 경험에만 적합하며 보안 검증에만 적합합니다.
더 복잡한 식별이 필요한 경우 (예 : 내부 및 외부 브라우저를 구별하는 등) Whetbrowser/Parser 와 같은 타사 라이브러리와 함께 더욱 향상 될 수 있습니다.
php의 get_browser () 함수를 사용자 정의 get_client_version logic과 결합하면 클라이언트 인식의 정확성과 유연성을 효과적으로 향상시킬 수 있습니다. 특히 모바일 인터넷 환경에서는 장치 및 앱 환경을 정확하게 식별하고 사용자 경험 및 기능 적응을 크게 최적화 할 수 있습니다.