可能重复:
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”?我试图调查这个,然而,我要么没有看到或者不明白我应该做什么。 任何帮助将不胜感激!
答案 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时访问它们 并尝试设置像
一样的cookiesetcookie("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'];