Rumah > pembangunan bahagian belakang > tutorial php > php程序header location跳转注意事项

php程序header location跳转注意事项

伊谢尔伦
Lepaskan: 2023-03-11 08:44:01
asal
3494 orang telah melayarinya

众所周知,PHP网站跳转有三种方法:JS、HTML META Refresh、PHP header("location: $url")。但是这里有一个非常小的细节,很容易导致出错。

header("location:test.PHP")跳转成功除了需要注意以下三点还有一个前提必须要注意:

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

这个前提就是你的编辑器是在UTF-8无BOM格式下编写的,而不是UTF-8格式。切记!

有一次制作一个跳转程序,结果忽略了这一点,导致跳转其实都是没有成功。

程序全部源码如下,程序地址:http://www.***.com/go.php

<?php
error_reporting(7);
$url = urldecode( trim($_REQUEST[&#39;url&#39;]));
if($url)
{
    header("Location: $url");

} else {

    exit(&#39;Error Input,<a href="http://www.***.com/?f=go.php">go back</a>&#39;);
}
Salin selepas log masuk


当访问地址为:http://www.***.com/go.php?url=http%3A%2F%2Fwww.zbphp.com%2F 的时候,firefox浏览器是正常的。后来把这个跳转程序复制到公司的另外一个网站,让QQ上的一些好友测试,结果很多人都说打不开:IE内核的浏览器直接提示无法访问或者找不到,chrome有时候会提示被重置或找不到,使用firefox测试也偶偶会提示无法找到,但多刷新一次才显示正常。

仔细检查代码,是没有问题的。况且firefox是可以跳转,后想到了以往阅读到的一点就是:IE浏览器如果输出的内容字节太小(小于512字节),那么就会被忽略。然后将源码由header location跳转修改为 js html才所有浏览器都测试通过,原先偶偶出现firefox点击提示找不到xxx服务器也没有再出现过,现go.php全部源码:

<?php
error_reporting(7);
function gheader($url)
{
echo &#39;<html><head><meta http-equiv="Content-Language" content="zh-CN">
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=gb2312"><meta http-equiv="refresh"
content="0;url=&#39;.$url.&#39;"><title>loading ... </title></head><body><p style="display:none">
<script type="text/javascript">
var cnzz_protocol = (("https:" == document.location.protocol)?"https://":"http://"); 
document.write(unescape("%3Cspan id=\&#39;cnzz_stat_icon_5696423\&#39;%3E%3C/span%3E%3Cscript src=\&#39;" + cnzz_protocol + "s9.cnzz.com/stat.php%3Fid%3D5696423%26show%3Dpic1\&#39; type=\&#39;text/javascript\&#39;%3E%3C/script%3E"));</script></p>
<script>window.location="&#39;.$url.&#39;";</script></body></html>&#39;;
exit();
}

$url = urldecode( trim($_REQUEST[&#39;url&#39;]));
if($url)
{
    gheader($url);

} else {

    exit(&#39;Error Input,<a href="http://www.***.com/?f=go.php">go back</a>&#39;);
}
Salin selepas log masuk

对于PHP跳转,我认为最好的方法就是用JS+HTML META。HTML META可以保证访客在禁用JS的情况下可以照样跳转

Atas ialah kandungan terperinci php程序header location跳转注意事项. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan