我是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>
答案 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); } ?>">