以下代码在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>
答案 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'];