在域名/子域名上设置Cookie

4

大家好,我有一个问题希望在这里得到解决。我需要在www.webshop.com域名上创建一个用英语编写的Wordpress网店,并创建名为“cartItems”的cookie。但是我还需要创建德语版本的网站,并区分英语和德语cookie。

现在我的问题是,如果德国网站位于www.webshop.com/de/下,我可以将德语cookie设置为仅适用于/de/域。但如何设置英语cookie可在除/de/之外的所有域中使用?

如果无法实现,能否在de.webshop.com上创建德国网站呢?

感谢您的帮助。


2
/de/ 不是一个有效的域名。为什么不在cookie或者后端服务器中存储语言标识呢? - Kerrek SB
是的,我明白了,只是不知道如何恰当地表达自己。由于不同的货币等原因,我不能使用相同的cookie,我想这可能需要一些转换,但我不是那么擅长 :) - Slavenko Miljic
2
它被称为“路径”,考虑到在cookie规范中使用了相同的术语,你在尝试使用这种技术构建货币交易应用程序时不熟悉它有点令人担忧。无论如何,cookie路径可能无法解决您的问题,但我不知道这是否是良好的设计;我有一种感觉,所有这些都应该在服务器端完成,而您的cookie应该只跟踪会话ID... - Kerrek SB
我在网店方面的编程工作不多,因为这是一个已经设置好的WordPress主题。我需要将这两个商店分开,因为欧元和美元的价格不同,而该主题不支持不同的货币。哦,谢谢你的帮助。 - Slavenko Miljic
2
如果Web应用程序已经固定,那么您不能将一个放在/en/下,另一个放在/de/下并同时运行它们,而不是将一个嵌套在另一个下面吗? - Kerrek SB
你看,那是一个非常好的问题。为什么今天早上他们决定这样做时我没想到呢?好吧,我猜那可能是最明智的选择。谢谢,愿你的意愿成真 :) - Slavenko Miljic
3个回答

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/”路径设置了Cookie,则可以从“/de/”或“/de/foo/”读取,但无法从“/”或“/bar/”读取。同样,如果您使用“/”路径设置Cookie,则可以在“/de/”、“/de/foo/”或“/bar/”上读取。


使用不同的域名(www.webshop.com用于英文,de.webshop.com用于德文):

// 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的每个子域,无论它是什么。确保这就是您想要的。


3

有三种方法可以将英语和德语 cookie 分开:

1) 域名: 您可以使用单独的 www. 和 de. 子域,就像您提到的那样。对我来说,这将是最容易的。

2) 路径: 您可以使用路径,但如果您的英语 cookie 设置为“/”,它仍然可以在“/de/”下访问。因此,如果您想采用这种方法,您需要像 Kerrek 建议的那样创建一个“/en/”路径。

3) 名称: 给德语 cookie 起一个不同的名称。

为了分开英语和德语 cookie,您需要执行其中之一。我认为,使用单独的子域名是最好的选择,因为无论语言如何,您的所有资源路径都将保持相同。


0

有趣的是,我一直使用那个插件直到昨天,它运行得非常好(适用于WordPress v 3.0.5免费版),但现在由于购物车/货币/我甚至不知道的问题,我必须进行更改。感谢您的评论。 - Slavenko Miljic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接