PHP:注意:未定义的索引:第9行的C:\ xampp \ htdocs \ vdab \ cookies.php中的NameFilledIn

时间:2014-09-22 09:42:56

标签: php cookies

我是PHP的新手,尽管我找到了类似的解决方案,但我还是无法解决。运行此页面时,我收到错误:注意:第9行的C:\ xampp \ htdocs \ vdab \ cookies.php中的未定义索引:NameFilledIn。当我填写名称并刷新页面时,它确实有效。一旦cookie的时间过去并刷新页面,我就会得到与开头相同的错误。

完整的代码是:

<?php
 if (!empty($_POST["txtName"]))
     {
      setcookie("NameFilledIn", $_POST["txtName"],time() + 60);
      $name = $_POST["txtName"];
     }
     else
     {
      $name = $_COOKIE["NameFilledIn"];
     }
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org /TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<?php
  if (isset($name))
  {
   print ("Welcom, ") . $name;
  }
?>
  <form action="cookies.php" method="POST">
  Uour name: <input type="text" name="txtName" value="<?php print ($name);?>">
  <input type="submit" value="Send">
  </form>

<br><br>
<a href="cookies.php">Refresh the page</a>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

发生通知Undefined index:是因为您尝试访问Cookie而不检查是否已设置。使用isset()检查它们是否在引用之前声明,如

 if (!empty($_POST["txtName"]))
     {
      setcookie("NameFilledIn", $_POST["txtName"],time() + 60);
      $name = $_POST["txtName"];
     }
     else
     {
       if(isset($_COOKIE["NameFilledIn"]))   // only if it is set
         $name = $_COOKIE["NameFilledIn"];
     }

你必须检查你试图回显/访问PHP变量的所有地方。

<input type="text" name="txtName" value="<?php if(isset($name)) { print ($name); } ?>">