2011-01-19 74 views
4

如果我使用以下基本代码为什么我在PHP中使用cookie时会得到未定义的索引?

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]; 

脚本与不确定的指数错误的打印过程中死亡。我究竟做错了什么?

+0

PHP是不知道死与未定义的索引**通知**(他们不是致命错误)... – BoltClock 2011-01-19 00:26:08

+0

取决于他是否有一些自定义错误处理BoltClock,他可以使用一个框架,设置为严格。 – RobertPitt 2011-01-19 00:35:24

回答

22

你行:

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

请告诉我在这里发生的是,你的Cookie设置,这意味着字符串是* 添加的头,随时与您的内容发送。

认为这就像一个队列,只有当您发送内容时队列才会进入浏览器。

由于您的cookie仍然在队列中,所以直到页面发送并且您重新调用页面才会设置它,然后在调用浏览器时会将Cookie信息发送回浏览器,浏览器会依次编译$_COOKIE阵列。

尝试认为它是这样的:

  • setcookie()函数;
    • (添加到队列)
  • 尝试$_COOKIE
    • (NOT FOUND)
  • 发送内容
    • (浏览器SETS的cookie文件)
  • 刷新
    • (浏览器发送COOKIE信息到服务器)
  • PHP编译
    • ($ _COOKIE受压FROM浏览器数据)
  • 尝试$_COOKIE
    • (FOUND)

希望这会有所帮助。

相关问题