470,874 Members | 1,470 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,874 developers. It's quick & easy.

cookies and php - basics

This is about the simplest example I could come up with, but for some reason
(not my browser's settings) it's not working...
[top of page]
<?php
setcookie($cookie_name, "cookie_content", time()+3600);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>cookie test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p>
<?php
if (isset($cookie_name))
{
print "Welcome! <br>";
}
else
{
print "Go away.";
}
?>
</p>
</body>
</html>

Am I missing something? thx
Jul 17 '05 #1
10 1616
Ah Ha... got it working

<?php
$cookie_name = "the_cookie_name"; <== this is what was missing
$cookie_content = "the_cookie_content";
setcookie($cookie_name, $cookie_content, time()+3600);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>cookie test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p>
<?php
if (isset($cookie_name))
{
print "Welcome! <br>";
}
else
{
print "Go away.";
}
?>
</p>
</body>
</html>

As for best practices, should the cookie code always be at the top of the page
like this?
Jul 17 '05 #2
umm... on second thought... back to the drawing board
"deko" <dj****@hotmail.com> wrote in message
news:0l*******************@newssvr25.news.prodigy. com...
Ah Ha... got it working

<?php
$cookie_name = "the_cookie_name"; <== this is what was missing
$cookie_content = "the_cookie_content";
setcookie($cookie_name, $cookie_content, time()+3600);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>cookie test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p>
<?php
if (isset($cookie_name))
{
print "Welcome! <br>";
}
else
{
print "Go away.";
}
?>
</p>
</body>
</html>

As for best practices, should the cookie code always be at the top of the page
like this?

Jul 17 '05 #3
Here's beta 2 - but something is still not right. I still get in without
waiting 2 hours....

<?php
$cookie_name = "www.mysite.com";
setcookie($cookie_name, time(), time()+7200); //say cookie is received at
3:00pm
//question: if the cookie has NOT yet expired, will it be set again?
//if yes, how do I prevent cookie from being set if it has not expired?
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>cookie test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p>
<?php
$cookie_content = $HTTP_COOKIE_VARS[$cookie_name];
if ($cookie_content > (time()-7200))
//say it's now 4:00pm - if your cookie timestamp (3:00pm) is greater than
//(i.e. after) 2:00pm (now minus 2 hours) then you can't come in
{
print "Go away! You are allowed in here only once every 2 hours.";
}
else
{
print "Welcome! You have not been here more than once in the past 2 hours.";
}
?>
</p>
</body>
</html>

Jul 17 '05 #4
*** deko wrote/escribió (Mon, 22 Mar 2004 07:02:23 GMT):
This is about the simplest example I could come up with, but for some reason
(not my browser's settings) it's not working...
[top of page]
<?php
setcookie($cookie_name, "cookie_content", time()+3600);
?>


Please note you never give any value to $cookie_name variable so cookie is
created without any name, just a value.

Set-Cookie: =cookie_content; expires=Mon, 22-Mar-04 10:30:51 GMT

--
--
-- Álvaro G. Vicario - Burgos, Spain
--
Jul 17 '05 #5
Sorry, I hadn't read your followups.

*** deko wrote/escribió (Mon, 22 Mar 2004 09:07:13 GMT):
//question: if the cookie has NOT yet expired, will it be set again?
Sure. Why shouldn't?
//if yes, how do I prevent cookie from being set if it has not expired?
if()

Check first whether cookie exists.

if ($cookie_content > (time()-7200))


Try this:

echo $cookie_content

You'll notice what fails. In general, printing the value of variables helps
a lot. You'll also make good use of print_r():

echo "<pre>";
print_r($HTTP_COOKIE_VARS);
echo "</pre>";

It's not a good idea to use dots in cookie names.

--
--
-- Álvaro G. Vicario - Burgos, Spain
--
Jul 17 '05 #6
Hi and thanks for the reply. What I am trying to do is very basic, I'm sure.

Again, here is my code - see comments for questions.

<?php
$cookie_name = "wwwmydomaincom";
setcookie($cookie_name, time(), time()+7200); //say cookie is received at
3:00pm
//here you say that the cookie will be set again, even if it has expired.
//the problem is, when I try to check to see if the cookie exists -
// using $HTTP_COOKIE_VARS - I get some error about the header...
//so what souldd teh code look like?
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>cookie test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p>
<?php
$cookie_content = $HTTP_COOKIE_VARS[$cookie_name];
if ($cookie_content > (time()-7200))
//say it's now 4:00pm - if your cookie timestamp (3:00pm) is greater than
//(i.e. after) 2:00pm (now minus 2 hours) then you can't come in
{
print "Go away! You are allowed in here only once every 2 hours.";
}
else
{
print "Welcome! You have not been here more than once in the past 2 hours.";
}
?>
</p>
</body>
</html>
Jul 17 '05 #7
*** deko wrote/escribió (Mon, 22 Mar 2004 10:49:34 GMT):
//here you say that the cookie will be set again, even if it has expired.
//the problem is, when I try to check to see if the cookie exists -
// using $HTTP_COOKIE_VARS - I get some error about the header...
//so what souldd teh code look like?


Something like this should work:

if($_COOKIE['wwwmydomaincom']!=''){
}

--
--
-- Álvaro G. Vicario - Burgos, Spain
--
Jul 17 '05 #8
Okay, I think I've got it:

<?php
setcookie("cookie_name",time(),0,"/");
$cookie_check = $HTTP_COOKIE_VARS["cookie_name"];
if ($cookie_check > (time()-7200))
{
print "Try again in 2 hours.";
exit;
}
else
{
echo "the code";
}
?>

This seems to be working as desired. The problem is how to accommodate visitors
from different time zones? For example, if your time zone is 3 hours behind me,
"the code" will never run for you. Is there a way to determine the time zone
offset of my visitors?
Jul 17 '05 #9
*** deko wrote/escribió (Mon, 22 Mar 2004 21:55:10 GMT):
This seems to be working as desired. The problem is how to accommodate visitors
from different time zones?


There's no need to. You are setting the time in the server.
--
--
-- Álvaro G. Vicario - Burgos, Spain
--
Jul 17 '05 #10
10-4

thanks for the help. I think I'm read for cookies 102...

cheers,

deko

"Alvaro G Vicario" <al******************@telecomputeronline.com> wrote in
message news:ii****************************@40tude.net...
*** deko wrote/escribió (Mon, 22 Mar 2004 21:55:10 GMT):
This seems to be working as desired. The problem is how to accommodate visitors from different time zones?


There's no need to. You are setting the time in the server.
--
--
-- Álvaro G. Vicario - Burgos, Spain
--

Jul 17 '05 #11

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

3 posts views Thread by Daniel Ruscoe | last post: by
4 posts views Thread by Brian Burgess | last post: by
7 posts views Thread by Brian Burgess | last post: by
5 posts views Thread by learner | last post: by
3 posts views Thread by Martin Mrazek | last post: by
5 posts views Thread by Mr Newbie | last post: by
2 posts views Thread by Dst | last post: by
2 posts views Thread by David Thielen | last post: by
4 posts views Thread by Jeff | last post: by
13 posts views Thread by Jon Slaughter | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.