使用PHP header进行页面跳转出现的问题解疑_PHP教程

php中文网
发布: 2016-07-15 13:32:12
原创
1126人浏览过

我们在进行页面跳转的时候,通常会用到

在PHP中用header("location:test.php")进行跳转要注意以下几点,有助于解决一些新手经常遇到的问题

1、location和“:”号间不能有空格,否则会出错。
2、在用header前不能有任何的输出。
3、header后的PHP代码还会被执行。

下面是和asp中重定向response.redirect的比较:

例1:

立即学习PHP免费学习笔记(深入)”;

response.redirect "../test.asp"
header("location:../test.php");

两者区别:

asp的redirect函数可以在向客户发送头文件后起作用.

AI建筑知识问答
AI建筑知识问答

用人工智能ChatGPT帮你解答所有建筑问题

AI建筑知识问答 22
查看详情 AI建筑知识问答
<ol class="dp-xml"><li class="alt"><span><span class="tag">< </span><span class="tag-name">html</span><span class="tag">></span><span class="tag">< </span><span class="tag-name">head</span><span class="tag">></span><span class="tag">< /</span><span class="tag-name">head</span><span class="tag">></span><span class="tag">< </span><span class="tag-name">body</span><span class="tag">></span><span> </span></span></li><li><span class="tag">< </span><span>%response.redirect "../test.asp"%</span><span class="tag">></span><span> </span></li><li class="alt"><span class="tag">< /</span><span class="tag-name">body</span><span class="tag">></span><span class="tag">< /</span><span class="tag-name">html</span><span class="tag">></span><span> </span></li></ol>
登录后复制

查是php中下例代码会报错:

<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span> </span><span class="tag-name">html</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">head</span><span class="tag">></span><span class="tag"><</span><span> /head</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">body</span><span class="tag">></span><span> </span></span></li><li><span class="tag"><?</span><span> </span></li><li class="alt"><span class="tag-name">header</span><span>("location:../test.php");  </span></li><li><span class="tag">?></span><span> </span></li><li class="alt"><span class="tag"><</span><span> /body</span><span class="tag">></span><span class="tag"><</span><span> /html</span><span class="tag">></span><span> </span></li><li><span>只能这样:  </span></li><li class="alt"><span class="tag"><</span><span> ?   </span></li><li><span>header("location:../test.php");  </span></li><li class="alt"><span class="tag">?></span><span> </span></li><li><span class="tag"><</span><span> </span><span class="tag-name">html</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">head</span><span class="tag">></span><span class="tag"><</span><span> /head</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">body</span><span class="tag">></span><span>...</span><span class="tag"><</span><span> /body</span><span class="tag">></span><span class="tag"><</span><span> /html</span><span class="tag">></span><span> </span></li></ol>
登录后复制

即PHP header之前不能向客户发送任何数据.
例2:

asp中

<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span> </span><span class="tag-name">html</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">head</span><span class="tag">></span><span class="tag"><</span><span> /head</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">body</span><span class="tag">></span><span> </span></span></li><li><span class="tag"><</span><span>%  </span></li><li class="alt"><span>response.redirect "../a.asp"  </span></li><li><span>response.redirect "../b.asp"  </span></li><li class="alt"><span>%</span><span class="tag">></span><span> </span></li><li><span class="tag"><</span><span> /body</span><span class="tag">></span><span class="tag"><</span><span> /html</span><span class="tag">></span><span> </span></li><li class="alt"><span>结果是重定向a.asp文件.  </span></li><li><span>php呢?  </span></li><li class="alt"><span class="tag"><</span><span> ?  </span></li><li><span>header("location:../a.php");  </span></li><li class="alt"><span>header("location:../b.php");  </span></li><li><span class="tag">?></span><span> </span></li><li class="alt"><span class="tag"><</span><span> </span><span class="tag-name">html</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">head</span><span class="tag">></span><span class="tag"><</span><span> /head</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">body</span><span class="tag">></span><span class="tag"><</span><span> /body</span><span class="tag">></span><span class="tag"><</span><span> /html</span><span class="tag">></span><span> </span></li></ol>
登录后复制

我们发现它重定向b.php.
原来在asp中执行redirect后不会再执行后面的代码.
而php在执行header后,继续执行下面的代码.
在这方面上php中的header重定向不如asp中的重定向.有时我们要重定向后,不能执行后面的代码:
一般地我们用

<ol class="dp-xml"><li class="alt"><span><span>if(...)  </span></span></li><li><span>header("...");  </span></li><li class="alt"><span>else  </span></li><li><span>{  </span></li><li class="alt"><span>...  </span></li><li><span>}  </span></li></ol>
登录后复制

但是我们可以简单的用下面的PHP header方法:

<ol class="dp-xml"><li class="alt"><span><span>if(...)  </span></span></li><li><span>{ header("...");exit();}  </span></li></ol>
登录后复制

还要注意的是,如果是用Unicode(UTF-8)编码时也会出现问题,需要调整PHP header的缓存设置.

<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span> [</span><span class="attribute">email</span><span>=%@]%@</span><span class="attribute">LANGUAGE</span><span>=</span><span class="attribute-value">"VBSCRIPT[/email]"</span><span> </span><span class="attribute">CODEPAGE</span><span>=</span><span class="attribute-value">"936"</span><span>%</span><span class="tag">></span><span> </span></span></li><li><span class="tag"><</span><span> %if Request.ServerVariables("SERVER_NAME")="s.jb51.net" then  </span></li><li class="alt"><span>response.redirect "news/index.htm"  </span></li><li><span>else%</span><span class="tag">></span><span> </span></li><li class="alt"><span class="tag"><</span><span> %end if%</span><span class="tag">></span><span> </span></li><li><span class="tag"><</span><span> </span><span class="tag-name">script</span><span class="tag">></span><span> </span></li><li class="alt"><span>var </span><span class="attribute">url</span><span> = </span><span class="attribute-value">location</span><span>.href;  </span></li><li><span>if(url.indexOf('http://www.jb51.net/')!=-1)</span><span class="attribute">location.href</span><span>=</span><span class="attribute-value">'/index/index.htm'</span><span>;  </span></li><li class="alt"><span>if(url.indexOf('http://www.kanshule.com/')!=-1)</span><span class="attribute">location.href</span><span>=</span><span class="attribute-value">'/index1/index.htm'</span><span>;  </span></li><li><span>if(url.indexOf('http://www.shouji17.com/')!=-1)</span><span class="attribute">location.href</span><span>=</span><span class="attribute-value">'/cn/index.asp'</span><span>;  </span></li><li class="alt"><span>if(url.indexOf('http://www.baidu.com/')!=-1)</span><span class="attribute">location.href</span><span>=</span><span class="attribute-value">'/cn/index.asp'</span><span>;  </span></li><li><span class="tag"><</span><span> /script</span><span class="tag">></span><span>  </span></li></ol>
登录后复制

以上就是在使用PHP header时应当注意的几点问题。


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446162.htmlTechArticle我们在进行页面跳转的时候,通常会用到 在PHP中用header(location:test.php)进行跳转要注意以下几点,有助于解决一些新手经常遇到的问题 1、l...
相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号