试图设置并获取Cookie - 导致未定义的索引错误

时间:2012-08-22 09:15:29

标签: cookies php

  

可能重复:
  PHP: “Notice: Undefined variable” and “Notice: Undefined index”

我刚才有一个关于我在PHP尝试设置和检索cookie值时收到的错误的快速提问。

从这个网站和其他网站,以下代码是我用来实现此目的的代码:

     <?php
     setcookie("edgeUser", $_POST['userName'], time()+0);
     echo $_COOKIE['edgeUser'];
     ?>

根据我的理解,这将设置一个名为=“edgeUser”的cookie,value =“$ userName”(从另一个HTML页面提供),并将在用户关闭会话的那一刻到期。

然而,当我运行此操作时,我收到的错误显然发生在“echo”行:

     Notice: Undefined index: edgeUser in C:\wamp\www\Login2.php on line **

我是否应该在代码中的其他位置定义“edgeUser”?我试图调查这个,然而,我要么没有看到或者不明白我应该做什么。 任何帮助将不胜感激!

4 个答案:

答案 0 :(得分:4)

您正在设置Cookie即时过期:

setcookie("edgeUser", $_POST['userName'], time()+0);

将其设为

setcookie("edgeUser", $_POST['userName'], time()+($howLongItWillLast));

编辑:Sudhir也正确地指出在下一页加载之前它不可用。来自docs

设置好cookie后,可以使用$ _COOKIE或$ HTTP_COOKIE_VARS数组在下一页加载时访问它们。

答案 1 :(得分:2)

设置好Cookie后,可以在下一页加载$ _COOKIE时访问它们 并尝试设置像

一样的cookie
setcookie("edgeUser",  $_POST['userName'], time()+3600);  /* expire in 1 hour */

答案 2 :(得分:0)

问题(来自错误)似乎是$_POST['userName']$_COOKIE['edgeUser'](取决于错误所在的行)是未定义的 - 这意味着它尚未设置,并且看到你实际上设置了cookie,我的赌注是它的userName是未定义的。确保获得它,请查看isset()

也可能是cookie在你回应它之前到期 - 在这种情况下,使用Fluffeh的解决方案。

答案 3 :(得分:0)

您可以设置并立即将其删除。如果您想“在用户关闭会话时删除”,则需要使用$_SESSION['edgeUser'] = $_POST['userName'];