2016-01-06 70 views
1

我有一個代碼PHP文件,而不是附加statment

if(count($_FILES) > 0) { 
    foreach($_FILES['fileAttach']['error'] as $status){ 
     if($status === UPLOAD_ERR_OK) { 
     $fname[] = $_FILES['fileAttach']['name'][$Ccount]; 
     $tmp_path[] = $_FILES['fileAttach']['tmp_name'][$Ccount]; 
     $ftype[] = $_FILES['fileAttach']['type'][$Ccount]; 
     } 
     $Ccount++; 
    } 
} else { $fname[] = "0"; $tmp_path[] = "0"; $ftype[] = "0"; } // this not working 

然後我想在功能

SendEmails($ReCEmail,$strSubject,$strMessage,$txtFormName,$txtFormEmail,$fname,$ftype,$tmp_path); 

它的工作原理,直到文件安裝到使用變量,但如果沒有我得到錯誤Notice: Undefined variable: fname in ... on line ..

function SendEmails($vasia,$strSubject,$strMessage,$txtFormName,$txtFormEmail,$fname,$ftypes,$tmp_path) { 

if(count($fname) == 0) 
     { code without variables $fname,$ftypes,$tmp_path } 
else {code with variables $fname,$ftypes,$tmp_path} 
} 

如何解決這個問題?

回答

1
if(count(array_filter($_FILES['fileAttach']['name'])) > 0) { 
    foreach($_FILES['fileAttach']['error'] as $key => $status){ 
     if($status === 0) { 
     $fname[] = $_FILES['fileAttach']['name'][$key]; 
     $tmp_path[] = $_FILES['fileAttach']['tmp_name'][$key]; 
     $ftype[] = $_FILES['fileAttach']['type'][$key]; 
     } 
    } 
} else { $fname[] = "0"; $tmp_path[] = "0"; $ftype[] = "0"; } 

,並在你的函數變化

if(count(array_filter($fname)) == 0) 
0

初始化您的$ FNAME數組,如果前:

$fname = array(); 
if($status === UPLOAD_ERR_OK) { 

確認您的上傳過程是通過把與工作呼應後,如果:

if($status === UPLOAD_ERR_OK) { 
     echo "Upload Status: " . $status . "<br>"; 
     $fname[] = $_FILES['fileAttach']['name'][$Ccount]; 

如果回波輸出顯示$狀態!= UPLOAD_ERR_OK,那麼$ fname沒有被初始化,因此Undefined變量錯誤。

如果上傳失敗,請爲該問題創建另一個包含相應代碼片段的問題。

+0

有什麼不同?不行! –

+0

我回答中回聲的輸出是什麼? – Tim

+0

相同的回聲,沒有不同 –

1

如果所有$ _FILES都是錯誤,那麼文件數組將爲零。所以這個錯誤是印刷

$fname[] = array(); 
$tmp_path[] = array(); 
$ftype[] = array(); 

    foreach($_FILES['fileAttach']['error'] as $key => $status){ 
     if($status === 0) { 
     $fname[] = $_FILES['fileAttach']['name'][$key]; 
     $tmp_path[] = $_FILES['fileAttach']['tmp_name'][$key]; 
     $ftype[] = $_FILES['fileAttach']['type'][$key]; 
     } 
    } 

     if(count($fname)==0) 
    { $fname[] = "0";$tmp_path[] = "0"; $ftype[] = "0"; } 
+0

有什麼不同?不行! –

+0

爲什麼計數($ _ FILES)= 1如果沒有文件被加載? –

+0

由於您上傳表單中的文件,即使您不上傳任何文件,也會發送$ _FILES ['fileAttach'] –