現在の位置: ホーム> 最新記事一覧> parse_urlを使用して、ユーザーの要求されたアドレスのソースを分析します

parse_urlを使用して、ユーザーの要求されたアドレスのソースを分析します

gitbox 2025-05-26

Webサイトの開発プロセス中、特に統計、ジャンプ制御、許可チェック、ロギングで、ユーザーがページにアクセスする場所を理解することは非常に重要な機能です。 PHPは、プロトコル、ホスト、パス、クエリパラメーターなど、URLからコンポーネントを簡単に抽出できる組み込み関数parse_urlを提供します。この記事では、 parse_urlを使用してユーザーの要求されたアドレスのソース情報を分析する方法を紹介します。

1。parse_url関数の概要

Parse_urlは、URLを解析するためにPHPで使用される関数です。その基本的な構文は次のとおりです。

 parse_url(string $url, int $component = -1): array|string|false
  • $ URLは、解析するためのURL文字列です。

  • $コンポーネントは、URLの特定の部分のみがPHP_URL_HOSTPHP_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とユーザー情報を処理するときは、セキュリティの問題を防ぐために、常にデータの検証とフィルタリングを維持することを忘れないでください。