웹 사이트의 개발 프로세스 중에, 특히 통계, 점프 제어, 권한 점검 및 로깅에서 사용자가 페이지에 액세스하는 위치를 이해하는 것이 매우 중요한 기능입니다. PHP는 프로토콜, 호스트, 경로, 쿼리 매개 변수 등과 같은 URL에서 구성 요소를 쉽게 추출 할 수있는 내장 기능 Parse_url을 제공합니다.이 기사에서는 Parse_url을 사용하여 사용자의 요청 된 주소의 소스 정보를 분석하는 방법을 소개합니다.
parse_url은 PHP에서 URL을 구문 분석하는 기능입니다. 기본 구문은 다음과 같습니다.
parse_url(string $url, int $component = -1): array|string|false
$ URL은 구문 분석 할 URL 문자열입니다.
$ 구성 요소는 URL의 특정 부분 만 반환하도록 지정하는 선택적 매개 변수입니다 (예 : php_url_host , php_url_path 등).
리턴 값은 URL의 다양한 구성 요소를 포함하는 배열입니다. $ 구성 요소가 지정되면 해당 부분의 문자열이 반환됩니다. URL이 유효하지 않은 경우 return false .
사용자 소스 주소는 일반적으로 $ _server [ 'http_referer'] 변수에 저장됩니다. 이를 통해 사용자가 점프 한 페이지를 알 수 있습니다.
$referer = $_SERVER['HTTP_REFERER'] ?? '';
다음으로 Parse_url을 사용하여 주소를 구문 분석합니다.
if (!empty($referer)) {
$urlParts = parse_url($referer);
print_r($urlParts);
}
사용자가 https://gitbox.net/products/view?id=123 에서 뛰어 내리면 출력은 다음과 비슷합니다.
Array
(
[scheme] => https
[host] => gitbox.net
[path] => /products/view
[query] => id=123
)
소스 호스트 이름을 얻으려면 다음과 같이 쓸 수 있습니다.
$host = parse_url($referer, PHP_URL_HOST);
echo "소스 호스트:$host";
사용자가 어떤 페이지에서 왔는지 알고 싶을 수도 있고 다음 코드를 사용하십시오.
$path = parse_url($referer, PHP_URL_PATH);
$query = parse_url($referer, PHP_URL_QUERY);
echo "길:$path\n";
echo "쿼리 매개 변수:$query";
쿼리 매개 변수를 추가로 구문 분석 할 수도 있습니다.
parse_str($query, $queryParams);
print_r($queryParams);
출력은 다음과 같습니다.
Array
(
[id] => 123
)
다음은 사용자의 소스 주소에 대한 모든 정보를 분석하고 표시 할 수있는 완전한 예입니다.
<?php
$referer = $_SERVER['HTTP_REFERER'] ?? '';
if ($referer) {
echo "원래의 Referer: $referer\n\n";
$urlParts = parse_url($referer);
echo "구문 분석 후 URL 구조:\n";
print_r($urlParts);
$host = $urlParts['host'] ?? '';
$path = $urlParts['path'] ?? '';
$query = $urlParts['query'] ?? '';
echo "\n소스 호스트名:$host\n";
echo "来源길:$path\n";
echo "쿼리 매개 변수字符串:$query\n";
parse_str($query, $queryParams);
echo "구문 분석 후쿼리 매개 변수:\n";
print_r($queryParams);
} else {
echo "소스 정보가 없습니다(Referer 존재하지 않습니다)";
}
?>
참조자는 항상 존재하지 않습니다 . 일부 브라우저 나 요청 도구는 참조자를 보내지 않거나 사용자가 개인 정보 설정 기능을 비활성화했습니다.
참조자를 위조 할 수 있습니다 . 유일한 보안 기준으로 사용하지 마십시오.
크로스 도메인 요청 문제 : 일부 브라우저는 크로스 도메인 요청으로 참조자를 전체로 보낼 수 없습니다.
광고 추적 : 사용자가 광고 링크에서 점프하는지 여부를 결정합니다.
도난 방지 링크 :이 사이트에서 나오지 않은 자원 요청을 거부하는 참조.
사용자 행동 분석 : 데이터 분석은 로그 레코드의 소스 주소와 함께 수행됩니다.
parse_url 과 $ _server [ 'http_referer'] 의 조합을 통해 사용자의 소스 주소를 쉽게 분석하고 웹 사이트 운영 및 보안을 강력하게 지원할 수 있습니다. URL 및 사용자 정보를 처리 할 때는 보안 문제를 방지하기 위해 항상 데이터의 확인 및 필터링을 유지해야합니다.