Home >Backend Development >PHP Tutorial >php跳转 - php提示「headers already sent by」具体怎么修改!

php跳转 - php提示「headers already sent by」具体怎么修改!

WBOY
WBOYOriginal
2016-06-06 20:36:38977browse

纯新人,跳转代码别人帮我写的,目的是跳转,文件为go.php
当网址输入go.php?id=taobao的时候就跳转到www.taobao.com

换主机后发生错误
Warning: Cannot modify header information - headers already sent by (output started at /data/home/。。。。。。/go.php:8) in /data/home/。。。。。。/go.php on line 10

百度得知需要改php.ini但新主机改这个很麻烦。。求有没有直接在以上文件php代码里修改以上错误的方法?

代码:

<code>


<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>正在进入....</title>


<?php $id=$_GET["id"];
if($id=="taobao"){Header("Location:http://www.taobao.com");
}
?>


</code>

请问应该怎么修改?谢谢!!!

回复内容:

纯新人,跳转代码别人帮我写的,目的是跳转,文件为go.php
当网址输入go.php?id=taobao的时候就跳转到www.taobao.com

换主机后发生错误
Warning: Cannot modify header information - headers already sent by (output started at /data/home/。。。。。。/go.php:8) in /data/home/。。。。。。/go.php on line 10

百度得知需要改php.ini但新主机改这个很麻烦。。求有没有直接在以上文件php代码里修改以上错误的方法?

代码:

<code>


<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>正在进入....</title>


<?php $id=$_GET["id"];
if($id=="taobao"){Header("Location:http://www.taobao.com");
}
?>


</code>

请问应该怎么修改?谢谢!!!

go.php页面的作用只做判断跳转使用的话,html标签可以全部去除,go.php文件的代码只需精简到剩下php即可:

<code>php</code><code><?php $id=$_GET["id"];
if($id=="taobao"){Header("Location:http://www.taobao.com");
}
</code></code>

如果还出现headers already sent 错误的话,就应该是编写代码的编辑器在文件开头隐藏了bom头信息,网上搜一下相关的编辑器对应方法即可。

如果要保留html代码,并且想要跳转的话,需要使用浏览器端页面跳转的方法,代码可以修改为:

<code>php</code><code>


<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>正在进入....</title>


<?php $id=$_GET["id"];
switch($id) {
    case 'taobao':
        echo "<meta http-equiv=\"refresh\" content=\"0;url=http://taobao.com\">";
        break;
    case 'baidu':
        echo "<meta http-equiv='\"refresh\"' content='\"0;url=http://taobao.com\"'>";
        break;
    case 'others':
        echo "<meta http-equiv='\"refresh\"' content='\"0;url=http://others.com\"'>";
        break;
}
?>


</code>

【http-equiv实现跳转与header跳转有啥区别】请参照 http://segmentfault.com/q/1010000000703858

<?php ... ?>代码块放到文件最顶部.

header() 被用来发送自定义的 HTTP 报文。
请注意一点header()必须在任何实际输出之前调用,不管是普通的html标签,还是文件里面的空行,空格或者是PHP>文件里的空行,空格。
这是一个非常普遍的错误,在通过include,require,或者其访问其他文件
里面的函数的时候,如果在header()被调用之前,其中有空格或者空行。
如果不是调用其他文件,仅仅是单独使用一个PHP或者HTML文件,在header()被调用之前有输出也会出错。
php手册

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn