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

时间:2011-01-19 00:24:33

标签: 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];

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

1 个答案:

答案 0 :(得分:22)

你的台词:

setcookie(NAME_COOKIE, $username,time() + (86400),"/", $cookie_domain);
print $_COOKIE[NAME_COOKIE];

这里发生的是你设置cookie,这意味着一个字符串被添加到标题中,随时可以随你的内容一起发送。

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

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

试着这样想:

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

希望这有帮助。