PHP:获得一个;使用未定义的常量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 ); 我不确定我需要做什么才能真正改变这一点,因为我

我没有对影响COOKIE的代码进行任何更改,现在我得到以下信息:

使用未定义的常量COOKIE\u登录-假定为“COOKIE\u登录”

//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
定义为常量。

另请参见。