0

我知道 XAMPP 在 Win 7 上遇到了很多问题。所以我成功安装了它,现在我遇到了以前从未遇到过的非特定错误。

我在 HTML 中有一个简单的 -tag

<form method="post" action="site.php">
  <input type="text" name="NAME">
</form>

我的 PHP 代码也就是这么简单:

<?php 
  $something = $_POST['NAME'];
?>

当我启动 XAMPP 并在“htdocs”中打开这个 HTML 时,出现了一个问题/通知:

注意:未定义的索引:在第 40 行的 C:\xampp\htdocs\test.php 中

那只是一个XAMPP错误吗?因为我以前从未遇到过这个问题,而且看起来很正确。我想我正在使用 XAMPP 1.7.7。

问候 :)

4

2 回答 2

2

当您使用在此之前尚未设置的数组索引的值时,会弹出“未定义索引”通知:

<?php
$myarray = array('a'=>1, 'b'=>2);
var_dump($myarray['a']); //outputs int(1) as this is defined
var_dump($myarray['c']); //we defined 'a' and 'b' but not 'c'.
?>

第三行将给出:“注意:未定义的索引:第 3 行 C:\xampp\htdocs\test.php 中的 c”。

这通常在您访问 $_GET 或 $_POST 数组时发生。大多数情况下,原因是您拼错了索引(例如,您键入$_POST['tset']了而不是$_POST['test']),或者因为您<input>在提交信息的 HTML 表单中编辑了一个元素,然后忘记重新调整 PHP 代码。

您可以通过使用如下方式测试索引是否存在来确保一切正常isset()

if( isset($_POST['test']) ) {
    $myvar = $_POST['test'];
    //and then whatever else you intended
}
else {
    //the index wasn't defined - you made a mistake, or possibly the user deliberately removed an input from the submitting form
    $error = "POST-array is missing the index 'test'!";
    //and now make sure that things after this which rely on the 'test' value don't run
}

您会在很多脚本中找到一个非常常见的行:

$myvar = isset($_POST['test']) ? $_POST['test'] : 'N/A';

这使用 if-else 结构的特殊 PHP 简写。这条线的作用与以下内容几乎完全相同:

if( isset($_POST['test']) ) {
    $myvar = $_POST['test'];
}
else {
    $myvar = 'N/A';
}
于 2012-04-17T18:15:59.647 回答
0

你应该做这个:

<?php
if(isset($_POST['NAME'])){
    $something = $_POST['NAME'];
}
?>

当您打开该页面时,在$_POST['NAME']您提交该数据之前没有。

于 2012-04-17T18:02:17.710 回答