为什么会产生以下错误?

时间:2017-03-06 09:17:00

标签: php html

我在Netbeans中编写PHP代码。程序正在生成正确的输出,但在浏览器上生成以下通知。

  

注意:未定义的索引:第2行的C:\ xampp \ htdocs \ PhpProject3 \ index.php中的名称

     

注意:未定义的索引:第3行的C:\ xampp \ htdocs \ PhpProject3 \ index.php中的名称

     

注意:未定义的索引:第4行的C:\ xampp \ htdocs \ PhpProject3 \ index.php中的名称

     

注意:未定义的索引:第5行的C:\ xampp \ htdocs \ PhpProject3 \ index.php中的名称

这是我的代码:

       <?php
       echo $name=$_FILES['name']['name'].'<br>';
       echo $size=$_FILES['name']['size'].'<br>'; 
       echo $type=$_FILES['name']['type'].'<br>';
       echo $tmp_name=$_FILES['name']['tmp_name'];
       ?>



      <form action="index.php" method="POST" enctype="multipart/form-data">
      <input type="file" name="name"><br/><br/>
      <input type="submit" value="Submit">
      </form>

Screen shot of the output

4 个答案:

答案 0 :(得分:3)

你需要添加一个IF语句,因为PHP想要访问变量$_FILES['name'],即使它没有设置。

然后,如果您使用的是POST请求(用户提交表单),则需要检查此值:

if($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['btnSubmit'])
{
   // get if the user submits the file
   if(isset($_FILES['name'])
   {
      echo $name=$_FILES['name']['name'].'<br>';
      echo $size=$_FILES['name']['size'].'<br>'; 
      echo $type=$_FILES['name']['type'].'<br>';
      echo $tmp_name=$_FILES['name']['tmp_name'];
   }
}

将您的按钮替换为:

<input type="submit" value="Submit" name="btnSubmit">

答案 1 :(得分:2)

试试这个:

<?php
    if(isset($_POST['btnSubmit']){
        echo $name=$_FILES['name']['name'].'<br>';
        echo $size=$_FILES['name']['size'].'<br>'; 
        echo $type=$_FILES['name']['type'].'<br>';
        echo $tmp_name=$_FILES['name']['tmp_name'];
    }
?>



<form action="" method="POST" enctype="multipart/form-data">
    <input type="file" name="name"><br/><br/>
    <input type="submit" value="Submit" name="btnSubmit">
</form>

答案 2 :(得分:2)

您收到该错误,因为当页面加载时,$_POST变量不存在,因此您首先需要检查是否存在后置变量。

 <?php

if (isset($_POST['submitBtn'])) {

    if (isset($_FILES['name'])) {

        echo $name = $_FILES['name']['name'] . '<br>';
        echo $size = $_FILES['name']['size'] . '<br>';
        echo $type = $_FILES['name']['type'] . '<br>';
        echo $tmp_name = $_FILES['name']['tmp_name'];
    }


}

?>



      <form action="index.php" method="POST" enctype="multipart/form-data">
      <input type="file" name="name"><br/><br/>
      <input type="submit" value="Submit" name="submitBtn">
      </form>

答案 3 :(得分:0)

试试这个

<?php
if(isset($_FILES['name']) && is_array($_FILES['name']))
{
    echo $name=$_FILES['name']['name'].'<br>';
    echo $size=$_FILES['name']['size'].'<br>'; 
    echo $type=$_FILES['name']['type'].'<br>';
    echo $tmp_name=$_FILES['name']['tmp_name'];
}
?>



<form action="index.php" method="POST" enctype="multipart/form-data">
<input type="file" name="name"><br/><br/>
<input type="submit" value="Submit">
</form>