IS UNDEFINED INDEX错误仅限于xampp

时间:2012-01-14 18:50:14

标签: php xampp

以下代码在XAMPP中给出未定义的索引,但在其他APACHE Server上没有给出此错误,此错误仅限于xampp

<?php
    if($_POST['names']!=""&&$_POST['n']!="")
    {
    print_r($_POST);
    }
?>

<form action="undefiend_error.php" method="post" >
<input type="text" name="names" value="">
<input type="text" name="n" value="">
<input type="hidden" name="nd" value="">
<input type="submit" value="submit" >
</form>

4 个答案:

答案 0 :(得分:1)

此错误确实会出现在所有系统上,但您的XAMPP服务器可能在php.ini中有display_errors = on。如果查看服务器的错误日志,但在屏幕上没有显示警告,则应记录error_reporting = 0。如果你没有在其他系统上看到错误,那并不意味着它没有发生 - PHP只是配置为不显示或记录它。

您需要使用isset()来测试$_POST值是否存在,或者您将获得未定义的索引通知:

// Check that both `$_POST['names']` and `$_POST['n']` exist with `isset()`
if(isset($_POST['names']) && isset($_POST['n']) && $_POST['names'] != "" && $_POST['n']!="")
{
  print_r($_POST);
}

答案 1 :(得分:1)

首先,检查表单是否已提交:

<?php
  if( $_SERVER['REQUEST_METHOD'] === 'POST' )
  {
     // Form submitted
  }
?>

然后您应该使用isset()来检查是否设置了帖子项目。 至少你可以使用empty()来检查帖子项是否为空(或NULL或0)

答案 2 :(得分:0)

未定义的索引/变量错误仅限于错误代码

尽管您运行的是系统,但错误的代码始终会产生错误。您可以使用某些设置来查看错误消息,但错误本身将保留在您的代码中。

所以,你必须纠正错误,不是错误信息。

要纠正这个问题,你必须检查是否应该有变量。上面的Wouter方法可以。所以,

if( $_SERVER['REQUEST_METHOD'] === 'POST' ) 
{ 
  print_r($_POST); 
} 

仅在缺少必填字段时才会引发错误 - 事件错误消息用于。

答案 3 :(得分:-2)

PHP提醒您必须首先定义您使用的每个变量。或者,如果它来自外部,则检查是否存在。试试这个

if(!empty($_GET))?$vars=$_GET:$vars=error;
echo $vars['n'];
echo $vars['names'];