test.php的
<?php
setcookie('username', 'mary', time()+1000);
setcookie('username', 'mary', time()-1000);
?>
view.php
<?php
echo $_COOKIE['username'];
?>
在取消设置Cookie后我遇到错误
注意:未定义的索引:第3行的C:\ Users \ joe \ Documents \ Discrete Math \ xampp \ htdocs \ view.php中的用户名
答案 0 :(得分:2)
您只是为了立即取消它而定义一个cookie。使用负时间在用户名上调用setcookie
为essentially calling unset($_COOKIE['username'])
(因此,Cookie超全局中的索引不再存在,因此未定义错误)。
我称之为expected behavior。
答案 1 :(得分:0)
取消设置cookie,它就像一个变量,它不再存在。 是清单。
$a = 1;
$a = null;
print $a;
答案 2 :(得分:0)
如果你取消设置cookie,cookie就会消失,因此$ _COOKIE数组不再包含这个特定的cookie密钥。
在实际使用密钥之前,您可能需要检查密钥是否存在。 您可以使用函数array_key_exists(http://php.net/array_key_exists)
来完成此操作答案 3 :(得分:0)
setcookie()
并不总是意味着您将cookie设置为某个值。它只是告诉PHP更新发送回UserAgent的Cookies标头中的cookie条目。如果代理看到到期时间(setcookie()
中的最后一个参数)已经过去,它将假定cookie已过期并将其删除。因此,cookie将被删除。尝试从数组中访问无效密钥将始终在PHP中生成通知。如果可以使用isset()
,则应该修复它,但在生产盒上,您只需隐藏错误/警告/通知或将其记录到私人文件中。
答案 4 :(得分:-1)
我会说,按设计工作。要禁用这些类型的警告,请使用:
ini_set('display_errors', 0);
或者
ini_set('display_errors', 1);
error_reporting(E_ALL ~ E_WARN); // or some other (combination of) flag(s).