Home >Backend Development >PHP Tutorial >Cannot modify header information - headers already sent by error_PHP tutorial

Cannot modify header information - headers already sent by error_PHP tutorial

WBOY
WBOYOriginal
2016-07-15 13:21:311024browse

In summary, the ultimate solution: modify the php.ini file; change the default output_buffering to off to 4096.

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 Cause of error
I added it at the head of the php program,
header("cache-control:no-cache,must-revalidate");
After that, the above error appeared on the page, 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 defaults to off. I now set it to 4096 and it's OK.
Used to solve the display prompt error, the error message cannot be based on (date + number of exported files) as the file name.
The setcookie function must be sent before any data is output to the browser
Based on the above restrictions, when executing the setcookie() function, you often encounter problems such as "Undefined index", "Cannot modify header information - headers already sent by"... etc. Solve the error "Cannot modify header information - headers already sent by" The method is to delay the output of data to the browser before generating the 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 feeds, there will be an error of "Header had all ready send by". In this case, you can use ob_start() to open the buffer first. The data block and echo() output of the PHP code will enter the buffer and will not be output immediately. Of course, opening the buffer has many functions, just use your imagination. It can be summarized in the following four points:

1. Used before header()

ob_start(); //Open buffer
echo "Hellon"; //Output
header("location:index.php"); //Redirect the browser to index.php
ob_end_flush();//Output all content to the browser
?>

2. The phpinfo() function can obtain client and server information, but the buffer method is the best choice to save client information.
ob_start(); //Open buffer
phpinfo(); //Use 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 buffer
?>
All output of php page
$content = ob_get_contents();//Get all the contents output by the php page
$fp = fopen("output00001.html", "w"); //Create a file and open it for writing
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;
}


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/477179.htmlTechArticleSummary, the ultimate solution: modify the php.ini file; change the default output_buffering to off and change it to 4096. . ?php ob_start(); setcookie(username,Song Yanbin,time()+3600); echo the...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn