使用 PHP header进行页面跳转中出现的疑惑
在php中进行页面跳转时,常会用到header(); 而其最常用的两种用法,一是重定向;二是设置页面状态为"404未找到页面"。
- header(); 重定向很简单。 通过location:“页面需要跳转到的地址”,即可在打开当前页面时实现页面的跳转。
如:以下代码实现了,打开当前页面后直接显示php官网页面的效果。
header("location: http://www.php.net"); // 重定向页面
exit;
- header(); 设置页面状态404却让新手有些费解。
具体实现方式:
header('HTTP/1.1 404 Not Found'); // 出现找不到网页的提示信息
header("status: 404 Not Found");
主要费解的原因有一下几点:
1. 若在一个新建的php文件中,输入以上代码,页面会直接出现404 Not Found 提示。
2. 然而,当我尝试在这两行代码后面添加一行输出语句后,发现404 Not Found提示消失,输出语句也正常显示。
header('HTTP/1.1 404 Not Found');
header("status: 404 Not Found");
echo ("hello");
但是打开f12,调出开发者工具后,发现了报错。
通过在网上搜索,发现原来 header('HTTP/1.1 404 Not Found'); 与 其后面的输出语句并不冲突。(原来以为两者之间会存在冲突,即使用了该语句后,之后的代码就不会被执行。)
即使在前面使用了header('HTTP/1.1 404 Not Found');后面的php代码仍会被执行。只不过查看台中会有报错提示。
- 最后,关于使用 header("location:"); 实现重定向页面时,网上提出了以下几点建议:
1、location和":"号间不能有空格,否则会出错。
2、在用header前不能有任何的输出,包括空格 (这个我亲自试过了,发现即使加了空格,或者输出语句依然能够实现跳转 对此存在疑问)
3、header后的PHP代码还会被执行。