在域/子域上设置cookie

时间:2011-09-07 21:44:52

标签: php javascript cookies

你好StackOverflow的人,我有一个问题,我希望你们中的一些人可以帮助我。 假设我应该在www.webshop.com域创建一些Wordpress网络商店,用英语写成,并为该域名提供名为“cartItems”的cookie。好的,不是问题。

问题在于我还需要制作该网站的德语版本,我需要区分英语和德语的cookie。

现在,我的问题是,如果德国网站在www.webshop.com/de/上,我可以设置德国cookie仅适用于/ de / domain,对吗? 但是如何设置除了/ de / one之外的所有域中都可以使用英文cookie。

如果德国网站在de.webshop.com

,那么就无法做到这一点

感谢您的所有帮助

3 个答案:

答案 0 :(得分:5)

虽然当然你必须使用两个不同的cookie名称,一个用于EN数据,一个用于DE数据。

使用不同的路径(www.webshop.com用于EN和www.webshop.com/de/用于DE):

// this will be available everywhere, both on the english version and the german one
setcookie ('my_en_cookie_name', 'some data', time() + 24*30*3600, '/');
// this will only be visible when accessing the german website, english version user won't be able to see it
setcookie ('my_de_cookie_name', 'some other data', time() + 24*30*3600, '/de/');

cookie的路径是反向阻塞(它只能从指定的目录或从它的子目录中读取,而不能从父目录中读取),因此如果您使用/ de / path设置cookie,则可以读取来自/ de /或/ de / foo /但不是来自/或/ bar /。以同样的方式设置一个路径为/的cookie,可以在/ de /或/ de / foo /或/ bar /上读取。


使用不同的域名(www.webshop.com for EN和de.webshop.com for DE):

// this will be available everywhere, both on the english version and the german one
setcookie ('my_en_cookie_name', 'some data', time() + 24*30*3600, '/', '.webshop.com');
// this will only be visible when accessing the german website, english version user won't be able to see it
setcookie ('my_de_cookie_name', 'some data', time() + 24*30*3600, '/', 'de.webshop.com');

注意:在域名“.webshop.com”上设置cookie意味着该cookie将被发送到webshop.com的每个子域,无论它是什么。确保这就是你想要的。

答案 1 :(得分:3)

有三种方法可以分隔英语和德语的cookies

1)域名: 你可以使用一个单独的www。和德。你提到的子域名。对我来说这将是最简单的

2)路径: 您可以使用路径,但如果您的英语cookie设置为“/”,它仍然可以在“/ de /”下访问。所以如果你想走这条路,你需要像克雷克建议的那样建立一个“/ en /”路径。

3)姓名: 为德语cookie添加不同的名称

您需要在这3个中选择其中一个来分别使用英语和德语。我认为拥有一个单独的子域名是最好的,因为不仅仅是您的cookie路径,而且无论语言如何,您的所有资产路径都是相同的。

答案 2 :(得分:0)

我个人使用过这个插件来解决这个问题: http://wpml.org/

但如果您更喜欢免费的解决方案,这里有一篇非常好的文章: http://codex.wordpress.org/Multilingual_WordPress