2015-11-24 20 views
3

比方說,我有這樣的形式:PHP顯示消息不得不附上文件或不附加文件

<html> 
<head></head> 

<body> 
<form action="add.php" method="post" enctype="multipart/form-data"> 
File 1: <input type="file" name="file1" /> 
File 2: <input type="file" name="file2" /> 
<input type="submit" name="submit" value="ADD"> 
</form> 
</body> 
</html> 

當我點擊提交按鈕:
(1)如果用戶沒有連接2個文件,顯示「2檔空」信息。
(2)如果用戶附加文件中的文件1或2的文件,顯示「有1個文件」消息。

我想是這樣的:

if(isset($_POST['submit']) && ($_POST['submit'] == 'ADD')) 
{ 
    if(!empty($_FILES['file1']) && !empty($_FILES['file2'])) 
    { 
     echo '2 files empty'; 
    } 
    else 
    { 
     echo 'have 1 file'; 
    } 
} 

但我總是得到「2個文件空」當我附上的文件。
什麼我寫錯了嗎?我應該如何修改它?

回答

2

給下面的一個嘗試:

if(!empty($_FILES['file1']['name']) && !empty($_FILES['file2']['name'])) 

添加['name']一部分,所以你比較字符串。

+0

尼斯超級DJ。你解決我的問題...... –

+0

@KKLMichael如果是這樣的答案,那麼請標記爲此類。這樣,其他人就知道答案了藏漢 – SuperDJ

0

如果您第一次到達該網頁,只需撥打網址即可獲得array(0) { }作爲var_dump($_FILES)的結果。 當您發佈的形式沒有選擇一個文件,這將導致

array(2) { 
    ["file1"]=> 
    array(5) { 
    ["name"]=> 
    string(0) "" 
    ["type"]=> 
    string(0) "" 
    ["tmp_name"]=> 
    string(0) "" 
    ["error"]=> 
    int(4) 
    ["size"]=> 
    int(0) 
    } 
    ["file2"]=> 
    array(5) { 
    ["name"]=> 
    string(0) "" 
    ["type"]=> 
    string(0) "" 
    ["tmp_name"]=> 
    string(0) "" 
    ["error"]=> 
    int(4) 
    ["size"]=> 
    int(0) 
    } 
} 

檢查empty($_FILES)會給你一個false現在,因爲有一些東西在數組中。 取而代之的是,只是檢查像這樣

if($_FILES['file1']['name']=='' && $_FILES['file2']['name']=='') 
    { 
     echo '2 files empty'; 
    } 
    else 
    { 
     echo 'have 1 file'; 
    } 

希望的$ _FILES數組內容不對tmp_name,幫助 亞歷克斯

+0

尼斯...亞歷克斯。我會學習它... –