したがって、ホットリンクを防ぐ対策を検討する場合は、HTTP_REFERER の操作を検討する必要があります。 PHP スクリプト内の対応する変数は $_SERVER['HTTP_REFERER'] で、HTTP_REFERER の値が格納されます。
対象の URL リソースへの直接アクセスは上記のホットリンク対策によってブロックされているため、それを取得するにはゲートウェイのようなものが必要です。端的に言えば、HTTP ヘッダーをラップした PHP スクリプトを書くことです。
以下は簡単な関数の実装です:
コードをコピーします コードは次のとおりです:
function getRemoteFile($url, $refer = '') {
$option = array(
'http' => array(
'header' => "Referer:$refer")
$context = stream_context_create($option);
return file_get_contents($url, false, $context);
これは比較的単純な 1 つの関数であり、その機能は、Referer を偽造し (stream_context_create 関数を使用)、相手のデータを取得することです (file_get_contents を使用し、allow_url_fopen を有効にする必要があります)。
「複雑」にしたい場合は、ソケット拡張機能を使用できますが、これについてはここでの説明の範囲を超えています。
コードは次のとおりです:
function getHost($url) { $result = preg_match('/^http: //([d |w|.]+)//', $url, $matches); if (sizeof($matches) >= 2) {
return $matches[1]} else { null を返す;
}
}
はさらに拡張してスクリプトにカプセル化し、
http://127.0.0.1/proxy.php?url=http://i.am/img を呼び出すことができます。これらのホットリンク対策リンクを取得します (さらに開発するには、JavaScript を使用してすべての画像リンクを置き換えます)。
上記は、PHP の HTTP_REFERER に基づくホットリンク対策である stream_context_create を、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人にとって役立つことを願っています。