php中的header函数

<?php
header("Location:page1.php");
header("Location:page2.php");?>
第二个
<?php
$set=1;
if($set==1)
header("Location:page.php");
else
header("Location:page.php");?>
location对应的文件什么时候得到的?编译时还是运行时?
跳转到本地文件。有两个header(“location”)时但location怎么知道跳转到哪个?location中的值什么时候得到?写错了,第二个程序中分别是page1.php和page2.php,两个程序运行完跳转到不同文件

header("Location:page.php");
是为了跳转到其它页面。当然是运行到它时才跳过去。

编译时还是运行时执行?这个问题问在include 与 require合适。。。。
注意区分它与 include 与 require区别

另外补充回答:
==================
页面跳转并不能用来阻止程序中其他语句的执行?
页面已经跳转了,以前的页面header语句后的逻辑代码是会继续执行的,但是输出语句是不会执行的。
你可以拿个简单的例子做实验:
-----------------------------
文件 a.php
<?php
header('Location:b.php');
echo '我是跳转前的页面a.php!';
?>

文件 b.php
<?php
echo '我是跳转后的页面b.php!';
?>

运行a.php,发现输出的是 "我是跳转后的页面b.php"

如果有二个header以上的header 则以最后一个为准。
同样上面的例子:
-----------------------------
文件 a.php
<?php
header('Location:b.php');
header('Location:c.php');
echo '我是跳转前的页面a.php!';
?>
运行a.php,会跳到c.php

再来个例子证明,逻辑代码是会执行的。
--------
<?php
header('Location:b.php');
$a = 'c.php';
header('Location:'.$a);
echo '我是aa.php';
?>
结果跳到了c.php,证明$a='c.php'执行了。

---------------------
总结:
header后,想禁止后面语句执行,你可以加上exit; 或return;
如下
<?php
header('Location:b.php');
return;
//exit;
$a = 'c.php';
header('Location:'.$a);
echo '我是a.php';
?>
则只会跳到b.php页面,不会到c.php.

---------------------
这个答案,你满意不?:)
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-05-20
1、函数描述:
header() 函数向客户端发送原始的 HTTP 报头。
2、函数语法:
header(string,replace,http_response_code)

3、函数参数:
①string:必需。规定要发送的报头字符串;
②replace :可选。指示该报头是否替换之前的报头,或添加第二个报头。默认是 true(替换)。false(允许相同类型的多个报头);
③http_response_code:可选。把 HTTP 响应代码强制为指定的值。
4、函数举例:
<?php
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
?>
<html>
<body>
第2个回答  2011-04-29
看不懂你说的是什么。

location:URI
location 后面跟着的是网址,可以是绝对网址,也可以是相对的。 比如可以是

header("location:http://www.shenmayouxi.com/");追问

跳转到本地文件。有两个header(“location”)时但location怎么知道跳转到哪个?location中的值什么时候得到?

追答

当然是最后一个了。

就像赋值变量一样。

header 发出的是响应头

追问

第一个是跳到最后一个,但第二个程序是跳到第一个,在运行时判断时跳到了第一个,如果是location在运行时赋值他怎么知道后面还有几个header?如果解释时赋值又怎么进行判断?

追答

它是发出的响应头,是在 运行时候 的。

也不叫赋值,就 像 print 一样,只不过 print 的内容是在正文里(HTTP协议的正文) , header 是在响应头(报头)里。

追问

那header是在程序运行完后才跳转?程序运行完后最终决定header跳转到哪个页面,也就是说在本程序执行完了它才跳转,页面跳转并不能用来阻止程序中其他语句的执行?

追答

对。不能。

location 发出的是一个 302 跳转的响应头,浏览器接收到这个响应头后,立即跳转。

第3个回答  2011-04-29
运行到条件的时候跳转 ,也就是运行时跳转。
第4个回答  2011-04-29
php是解释型语言,没有编译这个概念。
相似回答