Connecting Tech Pros Worldwide Help | Site Map

cookies... perl.. javascript

Lisa
Guest
 
Posts: n/a
#1: Jul 20 '05
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.
Thomas 'PointedEars' Lahn
Guest
 
Posts: n/a
#2: Jul 20 '05

re: cookies... perl.. javascript


Lisa wrote:
[color=blue]
> 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);[/color]
^^^[color=blue]
> // -->
> </script>
>
> is not seen by this perl script?[/color]

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
Lasse Reichstein Nielsen
Guest
 
Posts: n/a
#3: Jul 20 '05

re: cookies... perl.. javascript


Thomas 'PointedEars' Lahn <PointedEars@web.de> writes:
[color=blue]
> Lisa wrote:[/color]
[color=blue][color=green]
> > function SetCookie(username, value, expires, path, domain)
> > { document.cookie = username + "=" + escape(value) +
> > ((expires == null) ? "" : "; expires=" + expires.toGMTString()) +[/color][/color]
....[color=blue]
>
> 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.[/color]

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 - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
Closed Thread