Home >Backend Development >PHP Tutorial >Reasons for Cannot modify header information error_PHP tutorial
ob_start();
setcookie("username","Song Yanbin",time()+3600);
echo "the username is:".$HTTP_COOKIE_VARS["username "]."n";
echo "the username is:".$_COOKIE["username"]."n";
print_r($_COOKIE);
?>
Warning: Cannot modify header information - headers already sent by The reason for the error
I added it to the head of the php program,
header("cache-control:no-cache,must-revalidate");
The following page The above error occurred, and even after reading N information, there was no result. Today I accidentally discovered that there was something wrong with the configuration in my php.ini. I found the php.ini file under C:windows
output_buffering is off by default. I now set it to 4096 and it's OK.
Used to solve the display prompt error, the error message that (date + number of exported files) cannot be used as the file name.
The setcookie function must be sent before any data is output to the browser
Based on the above Limitation, so when executing the setcookie() function, you often encounter problems such as "Undefined index", "Cannot modify header information - headers already sent by"... etc. The method to solve the error "Cannot modify header information - headers already sent by" is Delay the output of data to the browser before generating a cookie. Therefore, you can add the ob_start(); function at the front of the program.
The ob_start() function is used to open the buffer. For example, if there is output before the header() function, including carriage returns, spaces, and line breaks, there will be an error of "Header had all ready send by". In this case, you can use ob_start() first. The data block and echo() output of the open buffer PHP code will enter the buffer and will not be output immediately. Of course, opening the buffer has many functions, just use your imagination. The following four points can be summarized:
1 .Used before header()
ob_start(); //Open buffer
echo "Hellon"; //Output
header("location:index.php"); //Put The browser redirects to index.php
ob_end_flush();//Output all content to the browser
?>
2.phpinfo() function can obtain client and server-side information, But to save client information, the buffer method is the best choice.
ob_start(); //Open the buffer
phpinfo(); //Use the phpinfo function
$info=ob_get_contents() ; //Get the contents of the buffer and assign it to $info
$file=fopen('info.txt','w'); //Open the file info.txt
fwrite($file,$info) ; //Write information to info.txt
fclose($file); //Close the file info.txt
?>
3. Static page technology
ob_start(); //Open the buffer
?>
All the output of the php page
$content = ob_get_contents();//Get all the content of the php page output
$fp = fopen("output00001.html ", "w"); //Create a file, open it, and prepare to write
fwrite($fp, $content); //Write all the contents of the php page to output00001.html, and then...
fclose($fp);
?>
4. Output code
Function run_code($code) {
If($code) {
ob_start();
eval($code);
$contents = ob_get_contents();
ob_end_clean();
}else {
echo "Error! No output";
exit();
}
return $contents;
}