This question already has answers here:
How to fix "Headers already sent" error in PHP
(11 answers)
Closed 9 years ago.
The Insert works perfectly as tested that without the header redirect.
My problem is i'm using MYSQLI with Object oriented approach and still new to it. When i have the header redirect in there it tells me in the browser
"Warning: Cannot modify header information - headers already sent by
(output started at /home/hawkwsco/public_html/admin/include/template/doc.inc.php:1)
in /home/hawkwsco/public_html/admin/include/library/functions/process/process.inc.php on line 10"
My code is below:
<?php
require ($_SERVER['DOCUMENT_ROOT'].'/admin/include/config/config.inc.php');
$query = ("INSERT INTO page(pa_id, pa_page, pa_page_info) VALUES ('NULL', '{$_POST['page']}', '{$_POST['info']}')");
$mysqli->query($query);
header("Location: http://".$_SERVER['SERVER_NAME']."/admin/content.php");
exit;
?>
What am I doing wrong?
Most likely the file you are including has some text in it being output (even a newline at the end of the file is enough) causing the output to start before the header can be sent. I usually make sure my includes do not have a ?> at the end to avoid this problem.
Alternatively, you can use output buffering (ob_start()) to avoid any output being sent until you are ready. ob_start() must be called before any output to be effective.
Related
This question already has answers here:
How to fix "Headers already sent" error in PHP
(11 answers)
Closed 4 years ago.
I try to use ob_start() ob_end_flush(); to hide the errors. Is there no other way to fix this Cannot modify header information?
echo $claim_url;
require_once $_SERVER['DOCUMENT_ROOT'] . '/auto-faucet/lib/shortlink.php';
$claim_url = shortlink_create($claim_url);
header('Location: ' . $claim_url, true, 303);
Before header there should not be anything in the output.
Remove echo $claim_url;
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.
Documentation
NOTE: use die() or exit() after redirect.
This question already has answers here:
How to fix "Headers already sent" error in PHP
(11 answers)
Closed 8 years ago.
I can't use header() in any page where the session_start() is running. When I use it it says
Can't modify header information already sent by (...)
Can anyone help me for this issue?
you're printing something to the http stream before you call header. You can't do this you need to call header before any printing/echoing is done.
You may be getting a warning from your session_start if that's the only thing in your code, try and suppress warnings so it does not show anything else besides code output:
error_reporting(E_ERROR | E_PARSE);
Otherwise just do as others have said and make sure your code isn't outputting anything before the header is changed.
This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
Headers already sent by PHP
When i use header( 'Location: index.php) in php code it display this error message.
Warning: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\OnlineCode\online\survey\code\index.php:55) in D:\xampp\htdocs\OnlineCode\online\survey\code\index.php on line 62
how can i fixed this ?
make sure there is no echo or print statement before redirecting the header.It cause this error when we use echo or print before redirecting the header.
This occurs when output has already been started. You have to put the header() calls before any output occurs. Even spaces outside of php tags count as output. It may be helpful to just post the page's code where we can look at it.
This question already has answers here:
How to fix "Headers already sent" error in PHP
(11 answers)
Reference - What does this error mean in PHP?
(38 answers)
Closed 9 years ago.
I have a simple code:
header("Location: http://www.wp.pl/");
end this code return:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/plik.php:1) in /var/www/plik.php on line 2
I don't have any BOM, whitespaces etc. before "php" declaration.
What's wrong?
Clearly, you do have something sent already, but you can get around this by wrapping the PHP script in ob_start() / ob_end_flush().
1) Is that the only content on your page?
2) Is that script being included on a different page?
This warning is because when you write anything to the file, that is not the header, you cannot write to the header anymore. The header tells the script where to put its output, and if the header has been modified after content is written, then there is not guarantee of where it should put that content (as I understand it)
If this is not the only content on the page, check if anything above it is throwing an error or displaying anything.
If this is being included on a different page, check if that other page might be displaying something or throwing a warning/error.
Double check that there are no spaces or new lines after the closing php tag ?>. If there is, those spaces or new-lines get output to the browser, and since there is already output, you can't modify the header. A good practice is to just never include the closing php tag in your php files to prevent this from happening.
This question already has answers here:
How to fix "Headers already sent" error in PHP
(11 answers)
Closed 2 years ago.
Possible Duplicate:
Headers already sent by PHP
Getting the following error:
"Warning: Cannot modify header information - headers already sent by (output started at..."
for the following line:
echo '<center>Current Time is '. gmdate("H:i A") . ' GMT (Greenwich Mean Time or UTC)<br />';
If I comment it out it just throws up the error at the next echo statement. Thoughts on why PHP hates my echo statements so much?
Here is my include toward the bottom of the HTML:
<div id="saveCanForm" width="100%">
<?php include('savereport.php'); ?>
</div>
It's not the echo statements that are the problem. It looks like you have a header call somewhere later in the file, but you can't send headers once you output any text at all. You could either move the headers to the beginning of the script or alternatively use output buffering.
Because our echos are coming before you are sending the header which is not allowed. Ensure that header go before any of your output.
If you don't want to rearrange you can also use output buffering.
Headers are dealt with before there is any other output, so if you write something out then PHP can't properly send headers afterwards. At some point in your code you are giving HEAD instructions which hence fails. (There's technical reasons for this, like redirects and so forth)
Its not the echo which is the problem. It is most probably caused by a file that you have included in the .php file. Have you included a file at all? This will probably be at the top. If you included file statement is not at the top of the file make sure it is.