I'm having problems understanding how a header("Location: http://www.google.com/");
can work in the middle of a HTML page's <body>
.
<?php ... ?>
part started.
I'm referring to the warning Cannot modify header information - headers already sent by...
that I'm expecting to get.
I'm testing this on my local PHP dev environment (Apache/2.2.15 (Win32) PHP/5.3.2).
Here's an example:
<html>
<head>
</head>
<body>
<?php header("Location: http://www.google.com/"); ?>
</body>
</h开发者_运维知识库tml>
Any ideas? Thanks.
It's because of output buffering...
If you have output buffering autoenabled in php.ini then you can emit headers at any time before the output is actually sent.
If you have output buffering enabled (see ob_start()), no output is sent until the whole page is finished.
I noticed this recently when doing some dev with a WAMP package on Windows. Caused a lot of hell when I moved to running it on a Linux box. I believe there was a config value set causing it to buffer all pages.
精彩评论