Cookies problems - why do they need special treatment?

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View
Hii everyone,
I've been programming in php for a long time, and the cookies have
always been a trouble for me.
When I have headers before the cookies set, I get a problem.
Even if I leave space on the first row before I set the cookie, and
there is nothing else,
It says I have headers before.
Is it like that for everyone, or is it just my host?
If so, is there anything that I can do to set cookies anywhere I want?
Please help,

Re: Cookies problems - why do they need special treatment?

Quoted text here. Click to load it

Read up on the HTTP protocol. A response of a server is divided into  
headers & body (not to be confused with an HTML head & body). Something  
like this:

200 OK
Content-length: xxx
(...more headers)

(empty line, followed by body)
<!DOCTYPE html>

As your script produces (non-header) output, the empty line, which  
seperates the headers from the body of the response, is sent to the  
browser, followed by whatever output you specified further. A cookie has  
to be set in the headers (with a Set-Cookie statement), and there's no way  
of going back as soon as this empty line has been sent.

If you have to set a cookie somewhere, consider these options:

1. Do almost all processing _before_ generating output. As soon as you get  
out of an HTML mindset (and those atrocious files mixing HTML & PHP like  
there's no tomorrow) this is actually quite easy.

2. Capture output in a variable, and only echo / print it as soon as you  
know no further processing/header() or setcookie() calls are needed.

3. Turn on output buffering (ob_start()) at the start of the script.  
(Which will effectively do something like (2) only with somewhat less  

The last one is a bit of cheat, and does not promote good code writing. It  
is however most simple one. Drawback is that on a slow loading page, it  
will take a while to get even a bit of content, while with output  
buffering of it can load 'as you go' (depending on how your browser  
handles it offcourse). If possible, go for (1).
Rik Wasmus

Re: Cookies problems - why do they need special treatment?

Quoted text here. Click to load it

Thanks a lot, ill think ill go for the second one... ill see what best
for me.

Site Timeline