Webサイトの開発プロセス中、特に統計、ジャンプ制御、許可チェック、ロギングで、ユーザーがページにアクセスする場所を理解することは非常に重要な機能です。 PHPは、プロトコル、ホスト、パス、クエリパラメーターなど、URLからコンポーネントを簡単に抽出できる組み込み関数parse_urlを提供します。この記事では、 parse_urlを使用してユーザーの要求されたアドレスのソース情報を分析する方法を紹介します。
Parse_urlは、URLを解析するためにPHPで使用される関数です。その基本的な構文は次のとおりです。
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とユーザー情報を処理するときは、セキュリティの問題を防ぐために、常にデータの検証とフィルタリングを維持することを忘れないでください。