我们使用 iframe 在我们的网站上展示广告。
iframe 用于让我们将广告生成代码和其他网站模块分开。
当我们跟踪我们网站上的广告浏览量时,并且需要能够准确计算哪种页面类型获得了哪些浏览量,我必须确保用户不能简单地将加载广告的 iframe 复制粘贴到另一个网站上。这将导致此页面的广告计数膨胀,并且计数与 iframe“应该”显示的页面的查看计数不匹配。
在任何人这么说之前:不,我不能简单地将页面查看次数与广告查看次数进行比较,或者使用页面查看次数 * 每页的广告数,因为每页的广告数不一定是静态的。
我需要想出一个解决方案,让广告仅针对动态生成并显示在我们页面上的 iframe 显示。
我不熟悉 PHP 会话,但从我有时间做的少量阅读来看,以下似乎是一个可以接受的解决方案:
将“s = session_id()”添加到广告 iframe 的 src。
在接收和处理广告请求的代码中,如果 s == session_id(),只返回(和计数)和广告。
如果我错了,请纠正我,但这将确保:
广告只会返回到其 src 与页面的其余内容一起生成的 iframe,就像在正常使用期间一样。
我们可以使用无效的 session_id 将我们的徽标返回给广告调用。
所以一个简单的例子是:
我们的页面之一:
<?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>
广告/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 显示我们很棒的网站的标志,而不是搞砸我们的观看次数。
我做了一些基本的测试用例:两个文件,一个生成 iframe 并回显它,另一个指向 iframe 的 src,它检查“s”参数并根据结果显示适当的消息。我将 iframe 复制到一个文件中并将其托管在不同的服务器上,并显示了正确的消息(不能有广告)。
所以,我的问题是:
这行得通还是我是一个 PHP 会话菜鸟,上面的测试完全是侥幸?
谢谢你的时间!
编辑:
我试图在不接触 SQL 服务器的情况下解决这个问题,因为站点的其余部分是 SQL 密集型的,我不想给已经摇摇欲坠的 SQL 服务器增加负载......