2014-02-14 211 views
0

我確信這個主題已經被解決過,但我似乎無法找到解決我的問題的適當解決方案,但我確定這不是唯一的。設置cookie然後刷新頁面,PHP

所以我得到,你不能設置一個cookie,並期望在不刷新頁面的情況下使用。所以我想知道我的選擇是什麼。

我有一組簡單的鏈接,通過將cookie設置爲該用戶的語言首選項來更改頁面上的語言。我需要檢測該cookie以分配變量,以便我可以將頁面輸出更改爲指定語言。

所以,當按下按鈕時,它會向URL欄發送一個get變量,然後設置cookie。刷新頁面後,我得到我想要的。

基本上,我需要傳遞GET變量,然後刷新頁面。我怎樣才能做到這一點?

我的PHP代碼:

// if someone is trying to change the language 
if(isset($_GET['lang'])) 
{ 
    // change the cookie value to that language 
    $value = $_GET['lang']; 
} 
// elseif they are not trying to change the language, and a cookie is already set 
elseif(isset($_COOKIE['language_pref'])) 
{ 
    // maintain the value of the language set in the cookie 
    $value = $_COOKIE['language_pref']; 
} 
// if get nor cookie is set 
else 
{ 
    // set default language to english 
    $value = 'en_US'; 
} 
$name = 'language_pref'; 
// cookie expires in 2 years 
$expireDate = time() + (2 * 365 * 24 * 60 * 60); 
$path = '/'; 
$domain = 'example.com'; 
$secure = false; //only transmit the cookie if a HTTPS connection is established 
$httponly = true; //make cookie available only for the HTTP protocol (and not for JavaScript) 
setcookie($name, $value, $expireDate, $path, $domain, $secure, $httponly); 

我的HTML:

<a href="?lang=zh_CN">ZH</a> 
<a href="?lang=en_US">EN</a> 
+0

您不需要刷新 - 信息,顯示哪種語言已通過URL參數傳遞給您。 – CBroe

+0

@CBroe我需要將頁面上的所有內容更改爲不同的語言,所以我肯定需要刷新頁面。 – compguy24

+0

_「我需要頁面上的所有內容」__ - 你爲什麼不已經擁有它? – CBroe

回答

0

好了,所以這裏是你的頁面的樣子:

> Read cookie and get the language 
> Read GET variable and SET COOKIE 
> Print out stuff in their language 

你只是做的事情錯了訂購。如果按以下順序執行操作:

> Read GET variable and SET COOKIE 
> Read cookie and get the language 
> Print out stuff in their language 

您將擁有正確的語言並且無需刷新頁面。

+0

所以我已經添加了我的PHP的後 - 你不覺得我遵循你的訂單? – compguy24

0

我認爲你所缺少的是鏈接到包含此php的url的按鈕。

如果你的按鈕,但你已經實現它有一個包含該頁面的URL的href,那麼當你點擊它時,你將刷新頁面並將cookie的內容讀入$ value。

嘗試關閉PHP標籤,然後補充說:

<a href='PAGE_URL_HERE'>button</a> 
+0

,因此按鈕位於站點每個頁面上的導航欄內,因此我需要重新加載當前頁面。不幸的是,當我使用一些js重新加載當前頁面時,它會一直添加get變量,所以如果有人點擊了?lang ='cats',並且它會重新加載?lang ='cats',然後他們再次更改語言,我得到了嗎?lang ='cats'?land ='dogs',這不是一個被認可的cookie。 – compguy24

+0

所有你需要的是2個包含「PAGE_URL?lang = cats」和「PAGE_URL?lang = dogs」的href鏈接。點擊它們會將其設置爲一個或另一個。 – Steven1978

+0

WTF有JS與此有關嗎?只需製作該鏈接,以便在每個頁面上鍊接_to同一個page_,只有添加了該語言的GET參數。 – CBroe

0

你可以使用PHP的頁眉或包含在僅在報表符合所有的條件被執行代碼的其他組成部分的JavaScript,因爲所有你想要的是刷新頁面設置cookie後或讀取

0

清除它這個PHP的,這讓我根據當前頁面翻譯得到的變量,並與存儲的cookie其隨後所有的網頁

if(isset($value)) 
{ 
    $language = $value; 

} 
else 
{ 
    $language = $_COOKIE['language_pref']; 
}