如果引荐来源与已加载的网站匹配,我想重定向到其他网页。我想这样做是因为我在几个网站上同时运行一个php rotator脚本。但是,如果我在网站ABCD上公布了网站A,我希望网站A仅在引荐者与网站BC或D匹配时显示引用者是否与网站A匹配。这是为了防止自己显示相同的网站。 / p>
脚本是在iframe中加载的php脚本。它没有引用隐形或类似的东西。我可以在rotator脚本中包含任何javascript或php。
任何想法或指示都将不胜感激。谢谢!
答案 0 :(得分:2)
抱歉,这有点长,但我想确保回答得很好。
redirect表示捕获当前页面的请求并将其指向其他页面。
例如:
在地址栏中输入“http://gooogle.com”会重定向到“http://google.com”
有多种重定向,我们不会在这里介绍它们。
referer表示链接到所请求页面的URI,从HTTP标头中拉出
例如:
你在“http://slate.com”页面上 您点击了一个指向“http://newsweek.com”的链接 在这种情况下,你的引用者是“http://slate.com”。重定向可能会修改引用者的值,具体取决于重定向的类型。
为了实现您的目标:不在您当前所在页面的iframe中显示广告,您实际上并不关心其中任何一个。您不需要任何重定向,也不需要担心链接到当前页面的人。
在页面加载时会执行一个javascript,会在文档中插入iframe 反过来,iframe会在显示广告的服务器上加载PHP文件。
所以你有一个看起来像这样的HTML页面:
的的index.html 强>
<!doctype HTML>
<html>
<head><title>Server A Index</title></head>
<body>
<header>
<section id="top_banner_ad">
<script src="./js/adrotator.js"></script>
</section>
</header>
<!-- Some content... -->
</body>
</html>
调用看起来像这样的JavaScript:
/js/adrotator.js
var holder = document.getElementById("top_banner_ad");
var iframe = document.createElement("iframe");
iframe.src = "http://example.com/inc/adrotators.php";
holder.appendChild(iframe);
最后,调用一个看起来像这样的PHP脚本:
的 /inc/adrotators.php 强>
<!doctype HTML>
<html>
<head><title></title></head>
<body>
<?php $advert = get_advert(); ?>
<a href="<?php echo $advert['url']; ?>">
<img src="<?php echo $advert['imgsrc']; ?>">
</a>
</body>
</html>
我不确定在这种情况下您有什么权限,但我会假设您可以访问所有这些:托管脚本的页面( index.html ),创建iframe( /js/adrotator.js )的javascript,以及iframe调用的php脚本( /inc/adrotator.php )。
你可以让/js/adrotator.js从index.html中找到并告诉/inc/adrotator.php它是谁,或者你可以让/inc/adrotator.php找出它的父框架是谁。
因此,iframe了解其父框架(尽管它们实际上只能沟通under certain circumstances)
如果你的iframe加载了一个位于同一个域(subdomains matter)的页面,一个解决方案就是在iframe中使用javascript(在PHP生成的HTML中)检查其父级,如下所示:
parent.document.location.href
如果目标域与父级匹配,则请求新广告。
(首选)如果您可以修改在您的网页中创建iframe的javascript,那么您可以让javascript检查网址并将其作为url参数添加到src属性它调用的iframe 例如:
var host_url = window.location.href;
var iframe = document.createElement("iframe");
iframe.src = "http://example.com/ad_rotator.php?host="+ host_url;
document.body.appendChild(iframe);
然后您的PHP脚本无法投放目标与$ _GET [“host”]
匹配的广告<?php
$advert = get_advert();
while ($advert['url'] == $_GET['host']) {
$advert = get_advert();
}
?>
<a href="<?php echo $advert['url']; ?>">
<img src="<?php echo $advert['imgsrc']; ?>">
</a>
这里的所有代码都是未经测试的伪代码,你肯定需要修改它,它只是一个启动器
如果您无法修改加载广告的PHP,也无法修改注入iframe的脚本,那么您就会受到很多冲击。