Register Members List Search Today's Posts Mark Forums Read

Reply
 
Article Options
Tip to Cure: Warning: Cannot add header information - headers already sent by Error
Logician
Join Date: Nov 2001
Posts: 4,449

MCSE, MCDBA, Coder

inside vb code
by Logician Logician is offline 30 Dec 2002

This is one of the most frequent errors you can get especially when you are hacking vb. It's easy to fix for someone who knows what he is doing, can be very hard to trace for others. If you are getting this error, I can not fix it for you, but some tips as to why this error happens can give you the ground to fix it yourself.

Why the Error happens?
First here is a technical background: Before the server sends a HTML info to the user, it first performs some special actions and sends a "header" page before it starts posting HTML elements of this page. These special actions and header information can not be send AFTER you started to send the HTML elements to user's browser.

For example, one of the most commonly used of these special actions is setting a cookie in user's computer. Cookie setting should be done inside the "header" and header should be sent before anything else is sent. So you can not set a cookie in user's computer say in the middle of a HTML page. If you try, you'll get this infamous error message: "Warning: Cannot add header information - headers already sent by.."

So the reason this error happens is your script started sending some HTML output and after that it tried to send an "header" which is wrong.

The error in vbulletin Hacking:
While you hack vb, you can encounter this problem if you wrongly hacked some vb files (eg. functions.php, config.php, global.php) which runs before HTML output begins. If you accidently started the HTML output in these files, you'll end up with this error. This is because after these files run, vbulletin tries to make some "header" related actions like checking user's cookie or attempting to set a cookie for the user and if you started the HTML output accidently beforehand, header can not be formed and this error happens.

This error is easy to fix if you know where you hacked and what causes this error. Just look for the additions you made in the code and try to find which part of it sends an information to user's browser and remove it.

But if you are a newbie this can be hard to trace because unlike what you think, the displayed information that causes this error is not always very easy to see. This information can be anything, even some invisible elements. For example "new line" command or even a "space" character (both of which are invisible to you) causes this error.

For example:
functions.php or config.php file ends with the line:

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

While hacking these files if you accidently pressed entered after > or put a space character there, you'll get this error because these invisible characters will start HTML output even if you didn't intend to. Same applies if you do the same in the same files right before

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

at the begining.

How to read the the error message you get:
When you receive this error, you'll get a message like this:
Warning: Cannot add header information - headers already sent by (output started at D:\webserver\testforum\admin\functions.php:2) in D:\webserver\testforum\admin\functions.php on line 1692
While tracing the error, people tend to check around the line 1692 in functions.php and get confused as they didn't even touch that part while they were hacking the vbulletin. Well, you are on the wrong track: This section is not where error resides, it's just where error is revealed. The error is actually in line 2 of functions.php as the error message gives you the tip: "output started at D:\webserver\testforum\admin\functions.php:2". This is where your HTML output started even though it shouldn't. So you should check around the line where error message says the output started at.

How the fix it:
Needless to say, you have to remove unnecessary line/section that starts the unauthorized HTML output. You have to be careful as this can be an invisible character like a space or new line as mentioned above.

If the output line that produces the error is very small like 1, 2 or 3, you make sure there is nothing else before <?php at the begining of the file. If the line number is too big then make sure you check there is nothing after ?> at the end of file. If the line is in the middle look for a "echo" command there, it may be the cause. These are just frequent occurences of this eror but do not cover all issues regarding this error, so you have to remember the general rule to fix it in your script: Remove any char. that starts the HTML output in the part error mentions.

If you are not very skilled at PHP, have no tools (sophisticated text/HTML editing tools like editplus) that show you invisible chars or can't find the error no matter what then your best bet is to remove the last hack you installed and reinstall it if necessary but this time more carefully. If you are desperate you can replace the file that produces the error with an unhacked vb file which will help you get rid of the error instantly. (Be warned, you'll lose all hacks you applied to this file).

Good luck! :glasses:
Views: 3869
Reply With Quote
Comments
  #2  
Old 30 Dec 2002, 10:55
Xenon's Avatar
Xenon Xenon is offline
 
Join Date: Oct 2001
Real name: Stefan Kaeser
Good text pal

but i think Hacking Hints and Tips would be the better place for it *move*
Reply With Quote
  #3  
Old 31 Dec 2002, 20:02
subduck's Avatar
subduck subduck is offline
 
Join Date: Sep 2002
Real name: Ziad Hilal
Nice Stuff!
Reply With Quote
  #4  
Old 31 Dec 2002, 20:56
NTLDR's Avatar
NTLDR NTLDR is offline
 
Join Date: Apr 2002
Real name: Lee Botley, BSc (Hons)
This also happens if you try to echo out from within the files before the headers are sent
__________________
Lee Botley, BSc (Hons) - vBulletin.org Moderator
http://www.thesistersthree.com/lee/sigs/signature.ts3
The Sisters Three Charmed Discussion Forums

WinterDir .:. vBindex v2.1 for vB2 .:. vBindex v3.0.0 RC5 for vB3
Reply With Quote
  #5  
Old 12 Feb 2003, 06:17
kmfdm_kid2000's Avatar
kmfdm_kid2000 kmfdm_kid2000 is offline
 
Join Date: Mar 2002
Thanks, this kind of info is very much appreciated and valued
Reply With Quote
  #6  
Old 12 Feb 2003, 10:01
Erwin's Avatar
Erwin Erwin is offline
 
Join Date: Jan 2002
Took me a while to figure this one out on my own.
Reply With Quote
  #7  
Old 01 Mar 2003, 23:06
Kriek's Avatar
Kriek Kriek is offline
 
Join Date: Jul 2002
Real name: Jon Kriek
Output Buffering

Use output buffering with ob_start() and ob_end_flush(). Although ob_end_flush() isn't needed in MOST cases because it is called automatically at the end of script execution by PHP itself when output buffering is turned on either in the php.ini or by calling ob_start()


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

Output buffering (PHP 4.0) was originally designed to solve HTTP header errors. I should also mention that Output buffers are stackable, that is, you may call ob_start() while another ob_start() is active. Just make sure that you call ob_end_flush() the appropriate number of times. If multiple output callback functions are active, output is being filtered sequentially through each of them in nesting order.
__________________
Jon Kriek Integer Doctor
A programmer is a machine for turning coffee into theorems.
[Suspend Thread Random Text Quotes Thread Torrent]
Reply With Quote
  #8  
Old 15 Oct 2003, 13:45
sabret00the's Avatar
sabret00the sabret00the is offline
 
Join Date: Jan 2003
Real name: sabe
Originally Posted by NTLDR
This also happens if you try to echo out from within the files before the headers are sent
thank you so much, that just fixed my problem, i echoed out the doc type before i called the global
__________________
UNDER CONSTRUCTION: Confessionary Hack

Make me a Hack of The Month author: GRPS: Groups Commune
make my hacks, they'll make you famous

unless it's a security concern, please do not pm/im me for support unless you're willing to pay.
Reply With Quote
  #9  
Old 16 Oct 2003, 03:58
raxafarian raxafarian is offline
 
Join Date: Apr 2003
gotten the same type of error when doing a quick edit on a php file using Cpanel's file edit.

It added a blank line at the end of the file. Once I found that (took a few minutes), the error went away.
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Article Options

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


New To Site? Need Help?

All times are GMT. The time now is 14:42.

Layout Options | Width: Wide Color: