我已經制作了一個以三種不同語言工作的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。任何想法我可能會錯過/做錯了什麼?
Cookies已啓用。有時我的代碼就像一個魅力,它會記住所有正確的事情,而其他嘗試我需要刷新我的頁面以便代碼成功執行。這真的讓我發瘋,因爲我似乎無法在這裏找到問題。 – Rijstkoek
要追蹤它,嘗試將代碼剝離到最小。例如:只有發佈的代碼後面跟着print_r($ _ COOKIE),沒有任何其他條件,如果和其他條件。 如果這仍然是不可靠/隨機的,它可能是一個服務器性能問題。有時[輸出緩衝](http://php.net/manual/it/function.ob-start.php)可以解決這些幽靈般的錯誤。 – Joram