By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,717 Members | 1,233 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,717 IT Pros & Developers. It's quick & easy.

cookies... perl.. javascript

P: n/a
Can anyone tell me why the cookie created by this javascript...

<script language=javascript type="text/javascript">
<!--
function SetCookie(username, value, expires, path, domain)
{ document.cookie = username + "=" + escape(value) +
((expires == null) ? "" : "; expires=" + expires.toGMTString()) +
((path == null) ? "" : "; path=" + path) +
((domain == null) ? "" : "; domain=" + domain);
}
var expiration = new Date();
expiration.setTime(expiration.getTime() + 60000);
SetCookie('username', 'Peter', expiration);
// -->
</script>

is not seen by this perl script?

#!/usr/local/bin/perl
use CGI;
$q = new CGI;
print $q->header;
$cookie_in = $q->cookie("username");
if($cookie_in)
{
print $cookie_in;
}
else
{
print "Can't find cookie\n";
}

-Lisa.
Jul 20 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Lisa wrote:
Can anyone tell me why the cookie created by this javascript...

<script language=javascript type="text/javascript">
<!--
function SetCookie(username, value, expires, path, domain)
{ document.cookie = username + "=" + escape(value) +
((expires == null) ? "" : "; expires=" + expires.toGMTString()) +
((path == null) ? "" : "; path=" + path) +
((domain == null) ? "" : "; domain=" + domain);
}
var expiration = new Date();
expiration.setTime(expiration.getTime() + 60000);
SetCookie('username', 'Peter', expiration); ^^^ // -->
</script>

is not seen by this perl script?


When a named argument of a function is not provided, its
value is not `null' (since that represents a null, empty,
or non-existent reference) but `undefined'. So you set the
cookie's `path' and `domain' to `undefined' as you do not
provide those arguments. And a site cannot read the cookies
not of its domain set which explains why your Perl script
fails.

In boolean expressions, `undefined' evaluates to `false',
so you can use the following:

function SetCookie(username, value, expires, path, domain)
{
document.cookie =
username + "=" + escape(value)
+ (expires
? ""
: "; expires=" + expires.toGMTString())
+ (path
? ""
: "; path=" + path)
+ (domain
? ""
: "; domain=" + domain);
}

HTH

PointedEars
Jul 20 '05 #2

P: n/a
Thomas 'PointedEars' Lahn <Po*********@web.de> writes:
Lisa wrote:
function SetCookie(username, value, expires, path, domain)
{ document.cookie = username + "=" + escape(value) +
((expires == null) ? "" : "; expires=" + expires.toGMTString()) +

....
When a named argument of a function is not provided, its
value is not `null' (since that represents a null, empty,
or non-existent reference) but `undefined'. So you set the
cookie's `path' and `domain' to `undefined' as you do not
provide those arguments.


However, since Lisa uses "==" to compare, it still works, since
type conversion makes:
(undefined == null)
true.

(but yes, just using "expires" in the condition is sufficient)

/L
--
Lasse Reichstein Nielsen - lr*@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
Jul 20 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.