When a web server sends a page out to a browser, there are a bunch of lines at the top that together are called the "header". They list things like "yes, this is an http response"; response codes like 200 (success) or 404 File Not Found or 500 Internal Server Error; A "Content-type:" header to say what sort of file follows, so's the browser knows what to do with it; various browser-cache control goodies; cookies; etc. etc. See the HTTP specifications held by the W3C for more details.
A typical header might look something like:
HTTP/1.0 200 OK
Date: Wednesday, 02-Feb-95 23:04:12 GMT
Server: NCSA/1.1
MIME-version: 1.0
Last-modified: Monday, 15-Nov-94 23:33:16 GMT
Content-type: text/html
Content-length: 2345
...a lot of bits and pieces; most interesting are the first line (which says that this is an HTTP response, and it was successful) and the Content-type: line (which says that what follows is an HTML document).
After the header lines comes a blank line, which looks something like this:
And after that comes the actual content of the response (in the case of the above example, a 2345-byte HTML document).
Now, when PHP is processing a script, it lines up the minimum necessary headers and any others you might specify with the header() function. It doesn't send them straight away, because you might want to change them with the header() function first.
As soon as the script generates any output, PHP first fires off all the headers that have been collected, then sends that blank line, and begins sending the generated output. From that moment on, no more headers can be sent as part of that response. Trying to send more is an error.
In nirmalraj's case, the header is an HTTP redirect - the header should look something like:
HTTP/1.0 303 See Other
Location: [whatever the URL is supposed to be]
Then the blank line. And that's it (there's no content assocated with this type of response).
But that's not what's getting sent. Somewhere in nirmalraj's page, before the call to header(), there is something being output - either printed, echoed, or outside the <?php ?> tags completely. As soon as PHP hits that spot it sends the headers out, the blank line, and the content at that spot. So what gets sent is
HTTP/1.0 200 OK
Content-type: text/html
Content-length: [this gets calculated]
[maybe a few other lines]
[Whatever it was that cause the script to output stuff]
Which (a) is not a redirect, and (b) means that trying to send another header won't work.