php脚本重定向代码问题

php脚本重定向代码问题,php,redirect,Php,Redirect,在检测到从搜索引擎到我的网站的搜索词后,我正在使用一个php脚本进行重定向 我的重定向代码工作正常 但对于一些关键问题,我想保持在同一页上。对于那几行代码,我在那几页中得到了一条警告信息 Warning: headers already sent (output started at /home/friendsj/public_html/index.php:2) in /home/friendsj/public_html/index.php on li

在检测到从搜索引擎到我的网站的搜索词后,我正在使用一个php脚本进行重定向

我的重定向代码工作正常

但对于一些关键问题,我想保持在同一页上。对于那几行代码,我在那几页中得到了一条警告信息

Warning:  headers already sent 
          (output started at /home/friendsj/public_html/index.php:2) in
          /home/friendsj/public_html/index.php on line 20
下面是我在该页面中使用的代码

$ref=$_SERVER['HTTP_REFERER'];

if(strstr($ref,"test")){ 
  $url="http://www.howtomark.com/robgoyette.html";
}
else if(strstr($ref,"mu+word+gmail")){
    $url="http://www.howtomark.com/marketbetter.html";
}
else{
  if(strstr($ref,"how+to+market+better")){
  }    
}

if($url !=""){
  header("Location:$url");
}

删除从索引第2行开始的任何输出。php

删除从索引第2行开始的任何输出。php

重定向是通过设置HTTP标头来完成的,正如使用
header()
函数所建议的那样。这意味着您只能在开始文档输出之前重定向。无论您在第2行开始打印什么,请稍后再打印;-)

重定向是通过设置HTTP头来完成的,正如使用
header()
函数所建议的那样。这意味着您只能在开始文档输出之前重定向。无论您在第2行开始打印什么,请稍后再打印;-)

如果您正在使用Header函数,则在调用该函数之前,不允许您输出某些内容

在您的例子中,您在index.php的第2行中编写了一些要输出的内容

一个糟糕的解决方法是使用输出缓存函数ob_start。
但这不是一个真正的解决方案。

如果您使用Header函数,则在调用该函数之前,不允许您输出某些内容

在您的例子中,您在index.php的第2行中编写了一些要输出的内容

一个糟糕的解决方法是使用输出缓存函数ob_start。 但这不是一个真正的解决方案。

试试这个

<?php ob_start();
$ref='some text goes here';

if(strstr($ref,"test")){ 
  $url="http://www.howtomark.com/robgoyette.html";
}
else if(strstr($ref,"mu+word+gmail")){
    $url="http://www.howtomark.com/marketbetter.html";
}
else{
  if(strstr($ref,"how+to+market+better")){
  }    
}

if(isset($url) && !empty($url)) {
  header("location:$url");
}
ob_flush();
?>

试试这个

<?php ob_start();
$ref='some text goes here';

if(strstr($ref,"test")){ 
  $url="http://www.howtomark.com/robgoyette.html";
}
else if(strstr($ref,"mu+word+gmail")){
    $url="http://www.howtomark.com/marketbetter.html";
}
else{
  if(strstr($ref,"how+to+market+better")){
  }    
}

if(isset($url) && !empty($url)) {
  header("location:$url");
}
ob_flush();
?>


您可以使用“0101010”按钮格式化代码。否则,它将不可读。另外,请检查文件结尾“>”后的U r not Left(不留任何空格)。您可以使用“0101010”按钮格式化代码。否则,它将不可读。另外,请检查“>”之后的文件结尾处是否留有任何空格。为什么输出缓存函数不是真正的解决方案?@Manos:因为更好的方法是治愈疾病,而不仅仅是隐藏症状。zerkms在一个错误的社区,我们需要一个程序员来解释:)@zerkms这种“疾病”在更大的应用程序中是不可避免的,尤其是在OO框架中,你不知道控制器会尝试做什么/什么时候做。使用输出缓冲是一种完全可以接受的策略。事实上,这通常是不可避免的。@Manos Dilaverakis:1。他的剧本有10行。2.OO框架总是使用责任链/截获过滤器/请求-响应的思想,所以我们永远不能直接进行回送,因为我们有“响应”对象与用户交互。ob_*是非常丑陋和蹩脚的策略为什么输出缓存函数不是真正的解决方案?@Manos:因为更好的方法是治愈疾病,而不仅仅是隐藏症状。zerkms在一个错误的社区,我们需要一个程序员来解释:)@zerkms这种“疾病”在更大的应用程序中是不可避免的,尤其是在OO框架中,你不知道控制器会尝试做什么/什么时候做。使用输出缓冲是一种完全可以接受的策略。事实上,这通常是不可避免的。@Manos Dilaverakis:1。他的剧本有10行。2.OO框架总是使用责任链/截获过滤器/请求-响应的思想,所以我们永远不能直接进行回送,因为我们有“响应”对象与用户交互。ob_*是非常丑陋和蹩脚的策略