为什么在PHP中使用cookie时会得到未定义的索引?

del*_*ber 4 php cookies

如果我使用以下基本代码

if (!defined('NAME_COOKIE') )
 define('NAME_COOKIE', "storedusername");

$cookie_domain = ".".$_SERVER['HTTP_HOST'];

setcookie(NAME_COOKIE, $username,time() + (86400),"/", $cookie_domain);
print $_COOKIE[NAME_COOKIE];
Run Code Online (Sandbox Code Playgroud)

脚本在打印期间因未定义的索引错误而死亡.我究竟做错了什么?

Rob*_*itt 22

你的台词:

setcookie(NAME_COOKIE, $username,time() + (86400),"/", $cookie_domain);
print $_COOKIE[NAME_COOKIE];
Run Code Online (Sandbox Code Playgroud)

这里发生的是你设置cookie,这意味着一个字符串*被添加到标题中,准备与你的内容一起发送.

将此视为队列,只有在您发送内容时,队列才会进入浏览器.

由于你的cookie仍然在队列中,它实际上没有被设置,直到页面被发送并且你回想起页面,然后在回忆时,浏览器将cookie信息发送回浏览器,浏览器又编译$_COOKIE阵列.

试着这样想:

  • setcookie()函数;
    • (加入到队列中)
  • 尝试 $_COOKIE
    • (未找到)
  • 发送内容
    • (浏览器将COOKIE设置为文件)
  • 刷新
    • (浏览器将COOKIE信息发送给服务器)
  • php编译
    • ($ _COOKIE从浏览器数据加载)
  • 尝试 $_COOKIE
    • (实测值)

希望这可以帮助.