PHP:获得一个;使用未定义的常量COOKIE“U登录”;我该如何解决这个问题?
我没有对影响COOKIE的代码进行任何更改,现在我得到以下信息: 使用未定义的常量COOKIE\u登录-假定为“COOKIE\u登录”PHP:获得一个;使用未定义的常量COOKIE“U登录”;我该如何解决这个问题?,php,cookies,Php,Cookies,我没有对影响COOKIE的代码进行任何更改,现在我得到以下信息: 使用未定义的常量COOKIE\u登录-假定为“COOKIE\u登录” //Destroy Cookie if (isset($_COOKIE[COOKIE_LOGIN]) && !empty($_COOKIE[COOKIE_LOGIN])) setcookie(COOKIE_LOGIN,$objUserSerialized,time() - 86400 ); 我不确定我需要做什么才能真正改变这一点,因为我
//Destroy Cookie
if (isset($_COOKIE[COOKIE_LOGIN]) && !empty($_COOKIE[COOKIE_LOGIN]))
setcookie(COOKIE_LOGIN,$objUserSerialized,time() - 86400 );
我不确定我需要做什么才能真正改变这一点,因为我不知道从什么开始,因此无法跟踪问题
谢谢。您需要用引号将阵列键括起来:
if (isset($_COOKIE['COOKIE_LOGIN']) && !empty($_COOKIE['COOKIE_LOGIN']))
setcookie('COOKIE_LOGIN',$objUserSerialized,time() - 86400 );
PHP将未知文本转换为字符串并抛出警告。您的php.ini可能具有不显示警告的错误报告级别,但可能有人对其进行了更新。无论哪种情况,在这种情况下利用PHP的行为都是不好的做法
有关更多信息,请查看:
始终在字符串文字数组索引周围使用引号。例如,$foo['bar']是正确的,而$foo[bar]不是
这是错误的,但它是有效的。原因是这段代码有一个未定义的常量(bar),而不是字符串(“bar”-请注意引号)。PHP将来可能会定义常量,不幸的是,对于此类代码来说,这些常量具有相同的名称。它之所以有效,是因为PHP会自动将裸字符串(与任何已知符号都不对应的无引号字符串)转换为包含裸字符串的字符串。例如,如果没有定义名为bar的常量,那么PHP将替换字符串“bar”并使用它
除非
COOKIE\u LOGIN
是您定义的实际常量,否则不能毫无错误地说$\u COOKIE[COOKIE\u LOGIN]
,例如:
define("COOKIE_LOGIN", 5);
有些人有编写代码的习惯,比如:
$ary[example] = 5;
echo $ary[example];
假设“example”(作为字符串)将是数组键。如果您禁用错误报告,PHP在过去已经原谅了这种行为。但这是错误的。您应该使用$\u COOKIE[“COOKIE\u LOGIN”]
,除非您明确将COOKIE\u LOGIN
定义为常量。另请参见。