Solved

Sending a Cookie to the Server, First.

Posted on 2002-05-09
8
238 Views
Last Modified: 2008-03-03
Hi Guys $ Ladies,

I am confused here.  I keep getting header errors when I try to set a cookie.  Then I realise that I have to Send the cookie to the server first.  ........  hha ha ha, got it.  I wipe everything off my folder and upload the cookie page first.  Still it does not work.

What is meant by sending the cookie first?, and how do I have to go about it.?
0
Comment
Question by:Senyonjo
8 Comments
 
LVL 4

Expert Comment

by:lokeshv
ID: 7000354
0
 
LVL 6

Accepted Solution

by:
andreif earned 50 total points
ID: 7000606
when you set headers using
header() or setcookie()
you can meet an error which says that headers are already sent.
This means that your script is not allowed to produce any output before header() or setcookie() call.

Sometimes it can be empty line like this:

--------- php file begin ------------

<?php

header("dsf");

?>

this empty line before php tag will send to output before header call, so you can't modify headers any more
0
 
LVL 2

Expert Comment

by:jpoesen
ID: 7000637
(This answer repeats some of andreif's comments)

you can't send header info manualy after some header info has already been sent.

It doesn't have anything to do with uploading files or anything.

Basically, when you write a page that starts with <html>, header info will be sent, this is how http works.

When you use a
0
 
LVL 2

Expert Comment

by:jpoesen
ID: 7000643
sorry.

when you use a cookie function like this :

setcookie('myCookieName', $myCookieValue,time()+15000);
Header("Location: somepage.php");

you send header info, namely "Location:somepage.php".

If you would do this :
<html>
<body>
sending cookie
<?
setcookie('myCookieName', $myCookieValue,time()+15000);
Header("Location: somepage.php");
?>
</body>
</html>

you automatically send header info because you have html to display, but then you request to send more info, after the header info has already been sent.

Like andreif said, even a blank line or a comment can be enough to trigger Header info to get sent.

In short : when use a Header() function, make sure that there is *no* possibility of characters being sent, like blank lines or comments.

Good luck
jpoesen

if you still have problems, post your code.
0
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 
LVL 32

Expert Comment

by:Batalf
ID: 7002682
If you need to set the cookie after the start of your script, like jpoesens code

<html>
<body>
<?
setcookie("myCookie","Value");
?>

you could use ob_start() and ob_end_flush() to buffer the output:

<?
ob_start();
?>
<html>
<body>
<?
setcookie("myCookie","Value");
ob_end_flush();
?>

This would work.

So you have to choice.

The most common one is to make sure that all cookies are set at the beginning of the script as the other comments describes to you.

Or: You could buffer the output to somewhere down in the script. Then the content of the page will be buffered on the server until ob_end_flush() is called.

Batalf
0
 
LVL 40

Expert Comment

by:RQuadling
ID: 7005681
Just another point to add.

A blank line at the top of a file before the <?php tag will be enough to bugger up cookies if you are not using on_start() and ob_end_flush().

Regards,

Richard Quadling.
0
 

Author Comment

by:Senyonjo
ID: 7018446
Thise were exellent comments.  Very helpful and my project is moving forward.  Thank you
0
 
LVL 1

Expert Comment

by:Kriek
ID: 8181703
In addition to Batalf's comment

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(). 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.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Popularity Can Be Measured Sometimes we deal with questions of popularity, and we need a way to collect opinions from our clients.  This article shows a simple teaching example of how we might elect a favorite color by letting our clients vote for …
Things That Drive Us Nuts Have you noticed the use of the reCaptcha feature at EE and other web sites?  It wants you to read and retype something that looks like this.Insanity!  It's not EE's fault - that's just the way reCaptcha works.  But it is …
The viewer will learn how to count occurrences of each item in an array.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now