2017-03-06 149 views
-2

我在Netbeans中編寫PHP代碼。程序正在生成正確的輸出,但在瀏覽器上生成以下通知。爲什麼會產生以下錯誤?

說明:未定義指數:名稱在C:\ XAMPP \ htdocs中\ PhpProject3 \的index.php第2行

說明:未定義指數:名稱在C:\ XAMPP \ htdocs中\ PhpProject3 \索引。上線PHP 3

說明:未定義指數:名稱在C:\ XAMPP \ htdocs中\ PhpProject3 \的index.php第4行

說明:未定義指數:名稱在C:\ XAMPP \ htdocs中\ PhpProject3 \第5行的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

+0

因爲'$ _FILES'沒有'name'索引?你不明白錯誤信息的哪一部分? – Biffen

+1

您必須檢查表單是否已提交 – hassan

+4

[PHP:「注意:未定義的變量」,「注意:未定義的索引」和「注意:未定義的偏移量」的可能重複](http://stackoverflow.com/questions/ 4261133/php-notice-undefined-variable-notice-undefined-index-and-notice-undef) – hassan

回答

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

您需要因爲PHP想要訪問的變量$_FILES['name']即使它沒有設置添加一個IF語句。

然後,你需要的,如果你是一個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"> 
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> 
+0

yeh。你的代碼工作。但我在newboston教程「https://www.youtube.com/watch?v=PYSW-Xejn1s&list=PL442FA2C127377F07&index=87」上看到了相同的內容。它沒有在那裏發出任何通知。 –

+0

你的通知是什麼意思? – Swellar

+0

警告某事。我猜 –

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> 
+0

顯然在生產環境中,您會調整您的PHP error_reporting,但這不是問題。 –

+0

你回答我上面的評論嗎? –

+0

是的,我只是說他問爲什麼會產生下面的錯誤,而不是如何完全抑制錯誤。 –

相關問題