2013-11-09 33 views
0

我已經制作了一個以三種不同語言工作的PHP網站。這些語言可以通過$ _GET或者$ _COOKIE來設置,$ _GET是第一個被檢查的,所以如果需要的話它可以覆蓋cookie。如果我確定了我需要的語言,我會包含一個包含我所有翻譯的文件並設置一個cookie供將來使用。該代碼看起來是這樣的:Cookie未被正確保存/正確讀取

<?php 
if (isset($_GET['language'])) { 

    // if language in $_SET is English, load english translation and set a cookie for the future. 
    if ($_GET['language'] == 'EN') { 
     setcookie('language','EN', time()+31536000); 
     include 'tekstenEngels.php'; 

    // if language in $_SET is French, load french translation and set a cookie for the future. 
    } elseif ($_GET['language'] == 'FR') { 
     setcookie('language','FR', time()+31536000); 
     include 'tekstenFrans.php'; 

    // lastly if language in $_SET is Dutch, load Dutch translation and set a cookie for the future 
    } else { 
     setcookie('language','NL', time()+31536000); 
     include 'tekstenNederlands.php'; 
    } 

// the same but for cookies in case this isn't the first visit 
} elseif (isset($_COOKIE['language'])) { 
    if ($_COOKIE['language'] == 'EN') { 
     include 'tekstenEngels.php'; 
    } elseif ($_COOKIE['language'] == 'FR') { 
     include 'tekstenFrans.php'; 
    } else { 
     include 'tekstenNederlands.php'; 
    } 
} 
?> 

這個工作對我的locahost不錯,但它似乎並沒有寫/我的web服務器一起使用時,正確讀取的cookie。任何想法我可能會錯過/做錯了什麼?

回答

0

確保您的php.ini文件允許Cookie。 如果沒有,您可能需要探索session_set_cookie_params

+0

Cookies已啓用。有時我的代碼就像一個魅力,它會記住所有正確的事情,而其他嘗試我需要刷新我的頁面以便代碼成功執行。這真的讓我發瘋,因爲我似乎無法在這裏找到問題。 – Rijstkoek

+0

要追蹤它,嘗試將代碼剝離到最小。例如:只有發佈的代碼後面跟着print_r($ _ COOKIE),沒有任何其他條件,如果和其他條件。 如果這仍然是不可靠/隨機的,它可能是一個服務器性能問題。有時[輸出緩衝](http://php.net/manual/it/function.ob-start.php)可以解決這些幽靈般的錯誤。 – Joram

0

如果代碼是相同的,但結果不同,它指向Web服務器的配置。在你的本地主機和您的網絡服務器

<?php 
phpinfo(); 
?> 

瀏覽它,比較任何的Cookie /會話相關的配置選項的結果:創建以下文件,名爲phpinfo.php

0

我以訪客的身份發佈了這個問題。在清除我的所有cookies以加快查找我網站的Cookie時,我已經「登出」了該網站,因此我無法再更新我的問題。

我有兩個不同的頁面,使用幾乎相同的PHP代碼來檢查語言:「主頁」(index.php)和「更多信息」頁面(info.php)。唯一的區別是重定向:在index.php頁面上設置語言時,它將用戶指向index.php頁面,而info.php頁面將用戶指向info.php頁面。

對於一些仍然未知的原因,當改變index.php頁面上的語言使得cookies在info.php頁面上做同樣的事情時無法正常保存,我不得不刷新頁面它工作,我真的不明白,因爲它使用的是相同的代碼。

但是,當更改info.php頁面中的語言代碼以重定向到index.php而不是info.php頁面時,它突然全部工作。

哇。我真的沒有看到任何邏輯。

這個問題已修復,雖然我不知道如何...我猜它與服務器配置有關,但我沒有任何訪問權限,因此我無法進行任何更改那裏。

此問題可能會被關閉。