0

サイトに広告を表示するためにiframeを使用しています。

Iframeは、広告生成コードと他のサイトモジュールを分離しておくために使用されます。

サイトの広告ビューを追跡し、どのページタイプがどのビューを取得するかを正確にカウントできる必要があるため、ユーザーが広告が読み込まれるiframeを別のサイトに単純にコピーアンドペーストできないようにする必要があります。これにより、このページの広告数が増加し、iframeが「表示される」ページの表示数と一致しなくなります。

誰かがそう言う前に:いいえ、ページビュー数と広告ビュー数を単純に比較したり、ページビュー数*ページあたりの広告数を使用したりすることはできません。ページあたりの広告数は必ずしも静的ではないからです。

動的に生成され、ページに表示されるiframeに対してのみ広告を表示できるようにするソリューションを考え出す必要があります。


私はPHPセッションに精通していませんが、少し読んだだけで、次のことが許容できる解決策のようです。

広告のiframeのsrcに「s=session_id()」を追加します。

広告リクエストを受信して​​処理するコードでは、s == session_id()の場合にのみ、広告を返します(そしてカウントします)。

私が間違っている場合は訂正してください。ただし、これにより次のことが保証されます。

広告は、通常の使用時のように、srcがページの残りのコンテンツと一緒に生成されたiframeにのみ返されます。

無効なsession_idを使用してロゴを広告呼び出しに戻すことができます。

したがって、簡単な例は次のようになります。

私たちのページの1つ:

<?php session_start(); ?>
<div id="someElement">
    <!-- EVERYONE LOVES ADS -->            
    <iframe src="http//awesomesite.com/ad/can_has_ad.php?s=<?php echo session_id(); ?>></iframe>
</div>

ad / can_has_ad.php:

<?php session_start(); ?>
if($_GET['s'] == session_id()){
    echo 'can has ad';
}
else{
    echo '<img src="http://awesomesite.com/images/canhaslogo.jpg"/>';
}

そして最後に、静的な's'パラメータを使用してコードをコピーしました。

<!-- HAHA LULZ I WILL SCREW WITH YOUR AD VIEW COUNTS LULZ HAHA -->            
<iframe src="http//awesomesite.com/ad/can_has_ad.php?s=77f2b5fcdab52f52607888746969b0ad></iframe>

それは彼らに私たちの素晴らしいサイトのロゴを示すiframeを与え、私たちの視聴回数を台無しにすることはありません。

基本的なテストケースをいくつか作成しました。1つはiframeを生成してエコーするファイルで、もう1つはiframeのsrcが指すファイルで、「s」パラメータをチェックし、結果に応じて適切なメッセージを表示します。iframeをファイルにコピーして別のサーバーでホストすると、正しいメッセージが表示されました(広告を含めることはできません)。


だから、私の質問は:

これは機能しますか、それとも私はPHPセッションの初心者であり、上記のテストは完全なまぐれですか?

御時間ありがとうございます!

編集:

I'm trying to solve this without touching the SQL server, as the rest of the site is very SQL intensive and I don't want to add load to the already creaky SQL server...

4

1 に答える 1

1

You shouldn't really put the session id in the url because it makes it vulnerable to referrer snooping. (If the user follows a link from a page with the session id in the url, they will be able to see the session id in the referrer header)

Rather than using an iFrame, you might consider making the request for the iFrame contents on the server (eg using curl) and printing it onto your page. That way there will be no way for anyone else to directly embed it.

You could also consider checking the referrer header before loading the iFrame (which should be the containing page's url) but it is very easy to fake referrer headers so this shouldn't be considered a 'good' solution.

In summary, I'd strongly suggest finding another way of putting the ads onto your page!

于 2010-05-27T10:11:53.003 に答える