2011-04-07 73 views
1

首先,請耐心解決問題,因爲我剛剛開始使用此功能。PHP將不會檢索cookie

所以,我有以下在index.php文件運行:

<?php 

    if(isset($_COOKIE['language'])) { 
     if (($_COOKIE['language']) == 'en') 
      print "<SCRIPT LANGUAGE=\"JavaScript\">window.location=\"URLGOESHERE\"</SCRIPT>"; 
     elseif (($_COOKIE['language']) == 'fr') 
      print "<SCRIPT LANGUAGE=\"JavaScript\">window.location=\"URLGOESHERE\"</SCRIPT>"; 
    } 
    else { 
     print "<SCRIPT LANGUAGE=\"JavaScript\">window.location=\"URL-FOR-COOKIE-SETTING-PAGE\"</SCRIPT>"; 
    } 
    ?> 

的「其他人」語句重定向進入到用戶設置自己的語言首選項的頁面,而一旦他們這樣做,該頁面集一個cookie然後將它們發送到正確版本的網站。然而,當用戶回到這個主要的index.php時,它似乎無法找到cookie並跳到「else」語句的正確位置。重定向用於使用'頭部'使用PHP完成,然後它也不起作用。我曾在其他地方看過這可能會造成一些麻煩,所以我將它改爲嘗試打印Javascript。

奇怪的是,我可以立即找到cookie,確切地說它應該在哪裏,正確的名稱和變量都存在。我完全像書本告訴我的那樣(據我所知)。我已經嘗試過在Firefox和Safari中都沒有運氣。

我錯過了什麼?

編輯:這是實際設置cookie的腳本。該參數從鏈接通過URL編碼發送這樣的:<a href="setlang.php?lang=en">

<?php 

$lang = urlencode($_GET["lang"]); 

setcookie("language", $lang, time()+60*60*24*90, ".URL"); 

switch ($lang) { 

case 'en': 
header('Location: URLGOESHERE'); 
break; 

case 'fr': 
header('Location: URLGOESHERE'); 
break; 
} 

?> 
+0

爲什麼你使用'javascript:window.location'而不是'header()'? – drudge 2011-04-07 23:31:35

+0

我之前提到過,重定向用於使用'header'使用PHP完成,並且它也不起作用。我曾在其他地方看過這可能會造成一些麻煩,所以我將它改爲嘗試打印Javascript。 – Jake 2011-04-08 00:03:16

+0

PHP版本看起來不錯。我見過'header()'唯一遇到過的麻煩是,如果你已經在輸出到頁面之前嘗試調用它。 – drudge 2011-04-08 00:06:07

回答

0

試試這個代碼:

setcookie("language", $lang, time()+60*60*24*90, "/"); 

我不確定應該什麼.URL做oo

+0

它的工作,謝謝你!我現在感覺很傻。 順便說一句 - 我已經從我的域名更改.URL,它必須沒有正確觸發。 – Jake 2011-04-08 00:07:28

+0

@Jake這就是爲什麼我們都在這裏,學習^^,但也嘗試做的東西...... – Khez 2011-04-08 00:08:24

3

cookie的心不是可用來設置它的腳本。

你必須設置cookie,然後在下一個頁面上加載cookie將被提供給PHP代碼

+0

對不起,我不明白 - 重定向新用戶的使用頁面(因爲他們還沒有cookie,使isset返回false)設置cookie。所以這個cookie已經被一個單獨的腳本設置了。但是在用戶第二次訪問主URL和這個頁面時,這個腳本應該能夠以這種方式找到過去的cookie,對吧? – Jake 2011-04-07 23:58:27