2011-09-07 156 views
4

嗨StackOverflow的好人,我有一個問題,我希望你們中的一些人能夠幫助我。 假設我應該在www.webshop.com域上創建某種Wordpress網上商店,用英文寫成,並在該網域中使用名爲「cartItems」的cookie。好的,不是問題。在域名/子域名上設置Cookie

問題是,我還需要製作一個德語版本的網站,我需要區分英文和德文的cookies。

現在,我的問題是,如果德國網站在www.webshop.com/de/上,我可以設置一個德國cookie以僅用於/ de/domain,對吧? 但是,我怎樣才能設置英文cookie將在除/ de/one之外的所有域中可用。

如果無法做到這將是可能的,如果德國網站的de.webshop.com

謝謝所有幫助

+2

'/德/'是不是域,爲什麼不保存語言標誌內的cookie,甚至內部的服務器端後端? –

+0

是的,我明白,我只是不知道如何正確表達自己。我不能使用相同的cookie,因爲不同的貨幣和whatnot,我想它可以做一些轉換,但我不是那麼好:) –

+2

它被稱爲「路徑」,並且鑑於在cookies的規範中使用了非常相同的術語,有點擔心你應該不熟悉它同時試圖用這種技術構建一個錢交易應用程序。無論如何,Cookie路徑可能無法解決您的問題,但我以某種方式不知道這是否是好設計;我有一種感覺,所有這些都應該在服務器端完成,並且您的Cookie應該只能跟蹤會話ID ... –

回答

3

有3種方法可以分出恩英文和德文餅乾

1)域名: 您可以使用單獨的www。和de。你提到的子域名。對我來說這將是最簡單的

2)路徑: 您可以使用路徑,但如果您的英文cookie設置爲「/」,它仍然可以在「/ de /」下訪問。所以如果你想走這條路線,你需要像Kerrek建議的那樣製作一個「/ en /」路徑。

3)名稱: 給德國的cookie一個不同的名字

你需要做那些3中的一個具有獨立的英語和德語區。我認爲有一個單獨的子域將是最好的,因爲不僅僅是你的cookie路徑,但所有的資產路徑將是相同的,無論語言。

0

個人而言,我已經使用這個插件來解決這個問題: http://wpml.org/

但是,如果你喜歡一個免費的解決方案,這裏是一個很好的文章: http://codex.wordpress.org/Multilingual_WordPress

+0

有趣的是,我使用的插件直到昨天,它工作得很好(它對Wordpress v 3.0.5免費),但現在我不得不作出改變,因爲購物車/貨幣/ idontevenknowanymore問題。感謝您的評論 –

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爲EN和de.webshop.com爲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的cookie。COM」表示該cookie將被髮送到子域webshop.com的,不管它是什麼。確保這就是你想要的。