Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Javascript (http://www.velocityreviews.com/forums/f68-javascript.html)
-   -   cookies... perl.. javascript (http://www.velocityreviews.com/forums/t873502-cookies-perl-javascript.html)

Lisa 10-31-2003 01:13 AM

cookies... perl.. javascript
 
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 10-31-2003 09:20 PM

Re: cookies... perl.. javascript
 
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

Lasse Reichstein Nielsen 10-31-2003 11:08 PM

Re: cookies... perl.. javascript
 
Thomas 'PointedEars' Lahn <PointedEars@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 - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'


All times are GMT. The time now is 10:32 AM.

Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.