views:

109

answers:

3

Some application, not written by me, and not in PHP, creates a cookie for the domain "www.domain.com".

I am trying to replace that cookie. So in php I did:

setcookie('mycookie','mydata',time() + 2*7*24*60*60,'/','www.domain.com', false);

However the resulting cookie is created for domain: ".www.domain.com", note the dot "." ahead of the domain.

So it doesn't replace it, it creates another cookie. What can I do?

A: 

Try to create several other cookie with same name, but a different domain. Example:

setcookie('mycookie','mydata1',time() + 2*7*24*60*60,'/','www.domain.com', false);
setcookie('mycookie','mydata2',time() + 2*7*24*60*60,'/','www.domain.com', false);
setcookie('mycookie_top','mydata1',time() + 2*7*24*60*60,'/','domain.com', false);
setcookie('mycookie_top','mydata2',time() + 2*7*24*60*60,'/','domain.com', false);

Then inspect the cookie created by these command in the Firebug. If you kept getting a double cookie, then this might be a bug in the PHP. Also, try to set the cookie in the javascript code, see if you still got the same problems.

Donny Kurnia
+2  A: 

The issue is also adressed here: http://php.net/manual/en/function.setcookie.php

See comment by "jah": If you want to restrict the cookie to a single host, supply the domain parameter as an empty string

You could also try ".domain.com" as the domain. The trailing dot will allow a cookie for all subdomains for "domain.com" and could overwrite the "www."-cookie, but I'll go with the above solution first.

Select0r
+1 Not specifying the domain is the key.
Gumbo
I was looking for the answer to this as well, and sure enough, leaving the domain blank worked. Thanks.
Andrew
A: 

If you specify a domain, you should follow RFC 2109 and prefix the domain with a dot; otherwise the client will do that. But if you don’t specify a domain at all, the client will take the domain of the request.

Gumbo