2017-09-14 113 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'];