それでは始めましょう。 フラッシュドライブはリファラーを送信できない、または送信できることを完全に知っていますが、このリファラーはフラッシュドライブ自体の物理アドレスになります。 何が良くないのか、絶対に必要ありません。 では、リファラーをどのように渡しますか? 非常にシンプルで、フラッシュドライブをphpスクリプトでラップするだけです。 ここで、番組を説明するためにリファラーを取得します。 私のようなタスクが「アスタリスク付き」の場合、この方法でリダイレクトとリクエストへのパラメーターの追加を行う簡単なトリックを行います。 PHPスクリプトでリファラーを受け取った後、フラッシュドライブへの新しいリクエストを生成し、リダイレクトを行います。 フラッシュドライブは、このパラメーターを受け取った後、サーバーへの各リクエスト(私の場合は写真)に追加します。このリクエストは、リファラーを含む必要なすべての情報を考慮するスクリプトによって処理されます。 さて、すべてが明確になるように、ユートピアコードの小さな例を示します(チェックなしなど、ロジックのみです。無駄にinしないでください)。
// flashcatch.php $file = './flash.swf'; $referer = $_SERVER['HTTP_REFERER']; // , // ... // header('Content-Type: application/x-shockwave-flash'); // . echo file_get_content($file); exit();
フラッシュドライブ自体の内部のコンテンツインプレッションの後続のアカウンティング用のパラメーターを追加する必要がある場合、コードはもう少し複雑になります。
// flashcatch-trick.php $file = './flash.swf'; $referer = $_SERVER['HTTP_REFERER']; // referer. if (strpos($_SERVER['REQUEST_URI'], '?')) { $connector = '&'; } else { $connector = '?'; } $newRequest = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . $connector . 'referer=' . $referer; // referer if (isExternalRequest() && !$_REQUEST['referer']) { header ('Location: ' . $newRequest); exit(); } // header('Content-Type: application/x-shockwave-flash'); // . echo file_get_content($file); exit();
そして、ここでは、フラッシャーについて覚えています。USBフラッシュドライブでは、リファラーが登録されている新しいパラメーターを渡します。私の場合は、リファラーパラメーターです。 そして、フラッシャーは、写真(オーディオ、ビデオ)を受信するためのサーバーへの要求を生成し、フラッシュドライブの内容が表示されるときにそれとサーバーを置き換え、リファラーとディスプレイをそれぞれ考慮します。
関数isExternalRequestは指定されていません;自分で記述するのは難しくありません。 その本質は明らかだと思います。外部要求の場合はtrueを返し、サーバーがUSBフラッシュドライブを要求した場合はfalseを返します。