HTML后函数内调用header()是否可行?是否触发错误或循环?
关于PHP header()函数的几个问题解答
1. 首行调用header("Location: $url")是否会引发无限重定向循环?
会的。因为$url拼接的是当前请求的域名和完整URI,跳转后服务器收到的请求和原请求完全一致,PHP会再次执行这段跳转代码,形成无限重定向循环。浏览器通常会在多次跳转后自动终止,但逻辑上这是死循环。
2. 将header调用放入函数,在HTML代码之后定义函数,表单提交时调用该函数是否可行?是否会触发错误?
这种写法不可行,必然触发错误。因为HTML代码在函数定义之前已经输出到浏览器,HTTP响应的头部已经被发送,此时再通过函数调用header(),PHP会抛出"Cannot modify header information - headers already sent"的错误。不管是直接调用还是通过函数调用,只要有任何输出(包括HTML、空格、换行)产生,就无法再修改HTTP头部。
3. HTML后直接调用header()肯定会报错的判断是否正确?
这个判断完全正确。HTTP协议要求响应头部必须在响应体(HTML内容属于响应体)之前发送,一旦有任何输出(哪怕是一个空格),PHP会自动发送默认的HTTP头部,之后再调用header()就无法修改头部,必然触发报错。
内容的提问来源于stack exchange,提问作者yobebix932
相关产品推荐
相关产品推荐

