如何防止在重定向期间调用广告?

时间:2012-11-26 13:18:42

标签: php class redirect ads output-buffering

在我的一个基于类的网站上,所有内容都通过index.php页面进行控制,每个页面都是自己的class,通过该索引页面进行调用。

在其中一个类中,存在为网站的每个页面调用的登录和注销标题,这两个标题都会调用显示在网站顶部的Ad

问题在于,只要页面上有重定向,就会在调用该页面的类之前发生这种情况,这种情况发生后 标题已被调用,这意味着对于自页面以重定向结束后从不看到的广告,我们进行了广告调用。

消极会影响广告的效果,因为它会降低广告的点击率(CTR)。

如果在重定向页面结束时,如果无法知道页面最终重定向,直到加载该页面的类,我怎么能确保没有进行广告调用?

我能想到的唯一“开箱即用”解决方案是以某种方式使用输出缓冲区首先加载该页面的类,然后以某种方式将标题附加到缓冲区的开头,如果它到达没有重定向的那一点,但我不知道这是否会起作用,或者你甚至不会这样做。

有什么想法吗?

修改

为了澄清,重定向已经通过HTTP标头完成,并且所有输出当前都是缓冲的。但是,每个页面都有自己重定向的原因,这就是为什么它由每个页面控制的原因。例如,一个页面负责发送消息,当发送消息时,它会在将消息保存到数据库后将用户重定向回其收件箱。在另一个页面上,不允许注销用户,因此特定页面会检查用户是否已登录,如果没有,则将其重定向到登录页面。

然而,似乎即使启用了完全输出缓冲并且通过各个类页面内的header()函数完成重定向,缓冲STILL也会在运行标头重定向之前执行Ad调用。

1 个答案:

答案 0 :(得分:0)

重定向必须发生在HTTP标头中,而不是使用HTML元标记或Javascript欺骗或类似标记。 HTTP标头需要先输出。因此,仅仅因为它是有意义的,您的应用程序应该在它甚至尝试输出任何HTML之前决定是否要重定向用户。因此,应该没有任何问题。

如果您当前的应用程序逻辑输出或准备HTML(触发广告)之前它决定重定向用户,那么您的应用程序结构就会很糟糕。更改。它应该像这样工作:

...

if ($userNeedsToBeRedirected) {
    header('Location: http://example.com/other/url');
    exit;
}

// output HTML and ads here
// never triggered on a redirect