2017-09-14 111 views
1

我試圖從cookie中的「DEFINE」設置值。設置值來自Cookie中的「DEFINE」

define("DEFUALT_LANG", "EN"); 

if(!isset($_COOKIE['user_lang'])) 
    setcookie("user_lang", DEFUALT_LANG, time()+3600*24*365); 

echo "lang:".$_COOKIE['user_lang']; 

打印是:DEFUALT_LANG

有點不可思議,不是嗎?它應該是「EN」...

+0

無法複製它。輸出'lang:EN'。 PHP 5.6 –

+1

'DEFUALT'你意識到這是一個拼寫錯誤。這個詞拼寫爲'DEFAULT'。 –

+2

另外,只有在*它已被設置並且頁面被重新加載之後,cookies才被設置*。 –

回答

0

您可以使用constant($string)來獲取定義值。

http://php.net/manual/fr/function.constant.php

setcookie("user_lang", constant("DEFUALT_LANG"), time()+3600*24*365);

+1

如果您閱讀文檔,那麼該語法應該產生與OP使用的語法相同的結果。 OP代碼還有其他問題。 – Chris

-1

這個替換您的代碼:

define("DEFUALT_LANG", "EN"); 

if(!isset($_COOKIE['user_lang'])) 
    setcookie("user_lang", constant(DEFUALT_LANG), time()+3600*24*365); 

echo "lang:".$_COOKIE['user_lang'];