2017-10-20 132 views
0

我有一个php文件,我在用户成功购买订阅后加载,以跟踪使用AdWords转化跟踪的购买转化。在这之后,它需要将用户重定向到下一个适当的页面/account/subscription/在顶部发送标题位置重定向之后,html呈现吗?

本来我置于header("Location: /account/subscription/");低于该产生的误差headers already sent转化跟踪代码。所以现在我把它放在跟踪代码上面。

因为我知道在我的想法中将标题重定向放在跟踪代码下面之后发送die()的好做法,以便在页面加载html之前不会终止页面。

即使header重定向位于页面的顶部,下面的HTML会在重定向之前呈现吗?

<? 
header("Location: /account/subscription/"); 
?> 

<!-- Event snippet for Example Purchase conversion page --> 
<script> 
    gtag('event', 'conversion', { 
     'send_to': 'AW-************/**************', 
     'transaction_id': '' 
    }); 
</script> 
<? 
die(); 
?> 
+0

为什么要在同一页面输出内容到客户端的浏览器?他已经走了......如果这个gtag适用于谷歌分析,那么浏览器将不会运行它,因为它会收到一个301.因此,在之前标记页面和之后的页面。让我知道,如果我在左外野! – Nic3500

+0

我仍然认为,即使它将重定向的HTML将首先加载虽然 –

回答

-2

为了重定向,您可以添加页眉部分之前,你必须包括另一部分ob_start();,这使物体缓冲,因此它不会发送一个报头,直到页面完全加载。要完成: 编辑:我现在意识到,这不是你想要实现的。我不相信它可以在纯PHP

<? 
ob_start(); 
?> 

<!-- Event snippet for Example Purchase conversion page --> 
<script> 
    gtag('event', 'conversion', { 
    'send_to': 'AW-************/**************', 
    'transaction_id': '' 
    }); 
</script> 
<?php 
header("Location: /account/subscription/"); 
?> 
+0

在你的例子中'ob_start();'在哪里?我应该使用'ob_get_clean();'来清理ob_start();'吗? –

+0

对不起。我修好了它。 – SirHyperNova

+0

通常'ob_get_clean();'是没有必要的,除非你想用对象缓冲区中的代码输出做一些事情 – SirHyperNova

1

重定向响应的机身号进行将只用于如果重定向不默默地跟着。

我不知道任何常见网页浏览器不会默默地遵循重定向。我认为lynx可以配置为其他方式。


一般的做法,以die()是因为你所有条件地重定向并要避免做额外的处理或包括任何HTML是不适合重定向消息的情况。

+0

来完成,所以即使在html之后放置'die()',之前的html也不会被分类为'additional processing'? –

+0

直到你告诉它它才会死。所以HTML会被输出并包含在响应中。浏览器会忽略它,因为它默默地遵循重定向。 – Quentin

+0

是否有反正我可以这样做,以便我可以在重定向用户之前加载html? –