IS UNDEFINED INDEX错误仅限于examplep


IS UNDEFINED INDEX error is only limited to xampp

以下代码在XAMPP中给出了未定义的索引,但在其他APACHE服务器上没有。此错误仅限于xamp-吗

<?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>

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

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

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

这个错误确实会出现在所有系统上,但您的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);
}

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

不管您运行的系统是什么,错误的代码总是会产生错误。您可以使用一些设置来阻塞错误消息,,但错误本身将保留在您的代码中

因此,您必须更正错误,而不是错误消息。

为了纠正这个问题,你必须检查是否应该有一个变量。上面沃特的方法还可以。所以,

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

只有当不存在必填字段时才会引发错误——错误消息就是为了这个。

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

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