0

我这样设置cookie

$id = 5; //just for clarification
setcookie("NAME", $id, time()+3600*24);

并以这种方式寻找它

$cookie = $_COOKIE["NAME"];

我检查是否设置了这个 cookie(使用:if(isset($cookie)))并且它工作得很好。

问题是,此代码仅在设置了 cookie 时才有效,但如果没有,我会收到以下错误

Notice: Undefined index: NAME in [path], line [line]

在某些情况下(自然)不会设置 cookie。有没有办法我可以处理它?

4

4 回答 4

6

尝试使用:

if (isset($_COOKIE['NAME'])){
  echo "Cookie Is Set";
  // Continue cookie validation without the echo.
}

因为您当前指的是全局$_COOKIE而不是单个键

于 2013-06-07T13:33:34.217 回答
4
$cookie = isset($_COOKIE["NAME"]) ? $_COOKIE["NAME"] : null;

isset($cookie)并且您可以在使用 cookie 时继续检查

于 2013-06-07T13:34:32.577 回答
1

是的,通过isset($_COOKIE['NAME'])在访问之前进行检查。或者,您可以完全关闭该错误消息(这不是一个好主意,它通常会在大多数服务器上默认打开)。为此,请参阅文档。在这种情况下,您需要关闭 E_NOTICE。

于 2013-06-07T13:33:46.487 回答
1

你需要检查isset($_COOKIE["NAME"])array_has_key($_COOKIE, "name");类似的东西

于 2013-06-07T13:34:15.597 回答