2015-04-25 94 views
0

我在這裏用PHP發送電子郵件。隨着文本,啤酒其他領域一切工作正常。問題是上傳文件。 一切看起來都不錯。即使是文件電子郵件的功能也是完美的。但消息中沒有任何提示。 當我點擊「Wyślijwiadomość」(發送)時,我收到有關上傳文件問題的消息。 enyone知道出了什麼問題嗎?PHP - 上傳文件[POST]

<?php 
 
//--- początek formularza --- 
 
if(empty($_POST['submit'])) { 
 
?> 
 

 
\t \t  <form action="" method="post"> 
 
         <table class="col-md-10 col-sm-12 col-xs-12"> 
 
          <tr> 
 
           <td class="col-md-2">NAZWISKO:<br /><br/></td> 
 
           <td><input type="text" name="formName" /></td> 
 
          </tr> 
 
\t \t \t <tr> 
 
          <td class="col-md-2">E-MAIL:<br /><br/></td> 
 
          <td><input type="text" name="formEmail"/></td> 
 
         </tr> 
 
         <tr> 
 
          <td class="col-md-2">ZAŁĄCZ KOSZTORYS:<br /><br/></td> 
 
          <td><input type="file" name="formFile" /></td> 
 
         </tr> 
 
         <tr> 
 
          <td class="formularzTresc col-md-2">TREŚĆ:<br /><br/></td> 
 
          <td><textarea name="formText"></textarea></td> 
 
         </tr> 
 
         <tr> 
 
          <td></td> 
 
          <td><p align="right"><input type="submit" name="submit" value="Wyślij wiadomość" /><p></td> 
 
         </tr> 
 
         </table> 
 
        </form> 
 
<?php 
 
} else { 
 

 
//dane adresata 
 
$email = '#'; 
 

 
//dane z formularza 
 
$formName = $_POST['formName']; 
 
$formEmail = $_POST['formEmail']; 
 
$formText = $_POST['formText']; 
 
$formFile = $_POST['formFile']; 
 

 
if(!empty($formName) && !empty($formEmail) && !empty($formText)) { 
 

 
//--- początek funkcji weryfikującej adres e-mail --- 
 
function checkMail($checkmail) { 
 
    if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) { 
 
    if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){ 
 
     return true; 
 
     }else{ 
 
     return false; 
 
     } 
 
    } else { 
 
    return false; 
 
    } 
 
} 
 
//--- koniec funkcji --- 
 
if(checkMail($formEmail)) { 
 
    //dodatkowe informacje: ip i host użytkownika 
 
    $ip = $_SERVER['REMOTE_ADDR']; 
 
    $host = gethostbyaddr($_SERVER['REMOTE_ADDR']); 
 
    
 
    //tworzymy szkielet wiadomości 
 
    //treść wiadomości 
 
    $mailText = "Treść wiadomości:\n$formText\nOd: $formName, $formEmail, $formFile ($ip, $host)"; 
 
    
 
    //adres zwrotny 
 
    $mailHeader = "From: $formName <$formEmail>\r\n"; 
 
\t $mailHeader .= "Content-type: text/plain; charset=utf-8\r\n"; 
 

 
     $target_path = "../przeslanePliki"; 
 
     $target_path = $target_path . basename($_FILES['formFile']['name']); 
 
if(move_uploaded_file($_FILES['formFile']['tmp_name'], $target_path)) { 
 
    echo "The file ". basename($_FILES['formFile']['name']). 
 
    "Plik został wysłany"; 
 
     
 
} else{ 
 
    echo "Wystąpił problem z przesłaniem pliku. Prosimy spróbować ponownie."; 
 
} 
 
\t 
 
    //funkcja odpowiedzialna za wysłanie e-maila 
 
    @mail($email, 'Pytanie do eksperta', $mailText, $mailHeader) or die('Błąd: wiadomość nie została wysłana'); 
 
    
 
    //komunikat o poprawnym wysłaniu wiadomości 
 
    echo 'Wiadomość została wysłana'; 
 
} else { 
 
    echo 'Adres e-mail jest niepoprawny'; 
 
} 
 

 
} else { 
 
    //komunikat w przypadku nie powodzenia 
 
    echo 'Wypełnij wszystkie pola formularza'; 
 
} 
 

 
//--- koniec formularza --- 
 
} 
 
?>

+2

什麼是* exact *錯誤消息? –

+0

我不知道,我不知道如何寫日誌到文件或某事。 我知道這裏的其他部分工作: if(move_uploaded_file($ _ FILES ['formFile'] ['tmp_name'],$ target_path)){ 但是,感謝下面的人我解決了這個問題,但有一個新的一個現在如果工作正常,那裏有一個信息,該文件已發送,但沒有在我的郵箱附件只是一個沒有它的短信。 – Aviene

回答

1

形式也需要以下屬性:ENCTYPE = 「多部分/格式數據」。它指定在提交表單時使用哪種內容類型

<form action="" method="post" enctype="multipart/form-data"> 
+0

好吧,現在我有一個信息,該文件已被髮送,但沒有附件在我的郵箱中的郵件:/ – Aviene

+0

您更改$ formFile = $ _POST ['formFile']; to $ formFile = $ _FILES ['formFile']; – Saty

+0

我改變了它,但仍然沒有工作。電子郵件發送但沒有附加。 – Aviene