현재 위치: > 최신 기사 목록> parse_url을 사용하여 사용자의 요청 된 주소 소스를 분석하십시오.

parse_url을 사용하여 사용자의 요청 된 주소 소스를 분석하십시오.

gitbox 2025-05-26

웹 사이트의 개발 프로세스 중에, 특히 통계, 점프 제어, 권한 점검 및 로깅에서 사용자가 페이지에 액세스하는 위치를 이해하는 것이 매우 중요한 기능입니다. PHP는 프로토콜, 호스트, 경로, 쿼리 매개 변수 등과 같은 URL에서 구성 요소를 쉽게 추출 할 수있는 내장 기능 Parse_url을 제공합니다.이 기사에서는 Parse_url을 사용하여 사용자의 요청 된 주소의 소스 정보를 분석하는 방법을 소개합니다.

1. 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 .

2. 사용자 소스 URL을 얻습니다

사용자 소스 주소는 일반적으로 $ _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
)

3. 특정 정보를 추출하십시오

1. 호스트 이름을 추출하십시오

소스 호스트 이름을 얻으려면 다음과 같이 쓸 수 있습니다.

 $host = parse_url($referer, PHP_URL_HOST);
echo "소스 호스트:$host";

2. 경로 및 쿼리 매개 변수를 가져옵니다

사용자가 어떤 페이지에서 왔는지 알고 싶을 수도 있고 다음 코드를 사용하십시오.

 $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
)

4. 완전한 예

다음은 사용자의 소스 주소에 대한 모든 정보를 분석하고 표시 할 수있는 완전한 예입니다.

 <?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 존재하지 않습니다)";
}
?>

5. 주목할만한 것들

  1. 참조자는 항상 존재하지 않습니다 . 일부 브라우저 나 요청 도구는 참조자를 보내지 않거나 사용자가 개인 정보 설정 기능을 비활성화했습니다.

  2. 참조자를 위조 할 수 있습니다 . 유일한 보안 기준으로 사용하지 마십시오.

  3. 크로스 도메인 요청 문제 : 일부 브라우저는 크로스 도메인 요청으로 참조자를 전체로 보낼 수 없습니다.

6. 응용 프로그램 시나리오의 예

  • 광고 추적 : 사용자가 광고 링크에서 점프하는지 여부를 결정합니다.

  • 도난 방지 링크 :이 사이트에서 나오지 않은 자원 요청을 거부하는 참조.

  • 사용자 행동 분석 : 데이터 분석은 로그 레코드의 소스 주소와 함께 수행됩니다.

결론

parse_url$ _server [ 'http_referer'] 의 조합을 통해 사용자의 소스 주소를 쉽게 분석하고 웹 사이트 운영 및 보안을 강력하게 지원할 수 있습니다. URL 및 사용자 정보를 처리 할 때는 보안 문제를 방지하기 위해 항상 데이터의 확인 및 필터링을 유지해야합니다.