PHP Header函数跳转时需要注意的一些问题
在PHP利用Header函数跳转时需会碰到一些无法跳转的问题,这里小编总结了常见的三种导致无法跳转的例子与解决方法给各位,希望此例子对大家带来帮助.
在通过php的header('Location:http://HdhCmsTestphpfensi测试数据')做跳转时,有时会不成功,追其原因有以下几种情况:
写法错误:
•location和[:]号间不能有空格,否则会出错.
•在用header()前不能有任何的输出.
•header后的PHP代码还会被执行,所以在函数之前最好加上exit()来停止之后程序的执行,另外还有一个问题,算是比较低级了.
编码报错, 代码如下:header("location:http://HdhCmsTestphpfensi测试数据/");
要求header前没有任何输出,否则会报错,当我们以 ANSI 格式编码时,多数默认情况,可以正常实现PHP跳转,代码如下:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
有时我们需要在网页中事先判断跳转条件,如果符合则正常显示网页,而网页是以 UTF-8 格式编码,此时使用header则会报错,原因是 UTF-8 编码在文本开始处偷偷地输出了三个字符(BOM),默认对我们不可见,因此不满足[header前没有任何输出]的条件,从而报错.
解决方法是使用Notepad++等文本编辑器打开文件,转为 UTF-8 无 BOM 编码格式,保存退出即可.
PHP header 默认302临时重定向,如需要使用301永久重定向,可使用以下代码:
<?php header( "HTTP/1.1 301 Moved Permanently" ); header( "Location: http://phpfensi测试数据/" ); ?>如果不关注HTTP状态,可以使用JavaScript实现跳转,代码如下:
<script type="text/javascript">
window.location.href="http://HdhCmsTestphpfensi测试数据/";
</script>
顺序问题, 代码如下:
<?php if (1){ header( "Location:http://HdhCmsTestbaidu测试数据/" ); } header( "Location:01.php" ); header( "Location:03.php" ); header( "Location:http://HdhCmsTestsina测试数据" ); echo "111" ; header( "Location:http://HdhCmsTestg.cn" ); echo "222" ; header( "Location:http://HdhCmsTest163.cn" ); echo "333" ; ?>如上代码为什么不跳转到header("Location:http://HdhCmsTestbaidu测试数据/");?
另外一个问题服务器读PHP文件,是读一点发送给客户端一点,还是一次读完后,才发送给客户.Javascript是怎么个读法?
php脚本是从上往下是顺序读的,在服务器端一次性读完以后发给客户端,这个文件,当读到if时本应该发送header("Location:http://HdhCmsTestbaidu测试数据/");但是下面还有header("Location:01.php");
header("Location:03.php");
header("Location:http://HdhCmsTestsina测试数据");就会继续读到最后一条而echo的优先级低于低于header,当很多个header并列时就会把最后一条显示,就像显示数组一样,$forum[],当你写 echo $forum就只会把数组中的最后一条记录显示,javascript是客户端脚本,当你的页面下载后以后所有的javascript脚本文件就已经在你的电脑里面了,只有对其操作时才会有响应.
查看更多关于PHP Header函数跳转时需要注意的一些问题 - php函数的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did31098