Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHPMailer - załącznik z formularza
Forum PHP.pl > Forum > PHP
jaskowice1
Witam

Mam problem z dodaniem załącznika do phpmailera. Potrzebuję by ten załącznik był ładowany z inputa, żeby dało się wgrać tylko pliki .doc, .docx, .pdf i po wszystkim to jest wysyłane na maila.

Link do jakiegoś przykładu można, bo co znajdę to nie działa mi, coś muszę źle robić - tylko nie wiem co :/

Czekam na odpowiedź
nospor
1) No to jesli to co masz ci nie dziala to pokaz co masz.... wywrozyc to mamy sobie i poprawic ci kod w myslach?
2) Ale rozumiesz, że najpierw plik musi byc poprawnie wgrany na serwere? Tu masz napisane jak sie robi upload
http://pl1.php.net/manual/en/features.file...post-method.php
jaskowice1
Mam coś takiego:

  1. if ($_FILES) {
  2. $plik_tmp = $_FILES['file']['tmp_name'];
  3. $plik_nazwa = $_FILES['file']['name'];
  4. $target_path = "uploads/";
  5. $target_path = $target_path . basename( $_FILES['file']['name']);
  6. echo $target_path;
  7. if(is_uploaded_file($plik_tmp)) {
  8. move_uploaded_file($plik_tmp, $target_path);
  9. echo "Plik: <strong>$plik_nazwa</strong>został przesłany na serwer!<br/><br/>";
  10.  
  11.  
  12. }
  13.  
  14. }
  15.  
  16. $mail->AddAttachment("uploads/".basename( $_FILES['file']['name']));


Chciałbym teraz dodać do tego filtracje, żeby wysyłało tylko pliki .pdf, .doc, .docx - jak to zrobić ?
Turson
Sprawdzaj mime-type i rozszerzenie.
jaskowice1
W której części ? Ja troszku początkujący jestem w tych sprawach.
Turson
Jeszcze przed move_uploaded_file.
Mime type pobierzesz getimagesize a rozszerzenie sprawdzić explode rozbijając nazwę pliku po kropkach i sprawdzając ostatni lement tablicy end
jaskowice1
A dlaczego coś takiego mi nie działa ?

  1. if ($_FILES['file']['type'] == 'application/msword' || $_FILES['file']['type'] == 'application/pdf') {
  2.  
  3. $mail->MsgHTML($email_message);
  4. $mail->AddAttachment("uploads/".basename( $_FILES['file']['name']));
  5. }
  6.  
  7. else {
  8. echo("<div style='clear:both; width:400px; margin: 0 auto;color:#bab8c6;'>Możesz przesłać tylko pliki .pdf, .doc lub .docx</div>");
  9. }
Turson
Sprawdź sobie dla testów jaki type ma wysyłany plik, dając przed warunkiem np.
  1. echo 'file type: '.$_FILES['file']['type'];
jaskowice1
Ok dzięki, miałem

  1. application/vnd.openxmlformats-officedocument.wordprocessingml.document


a jeszcze pytanie mam, jak zrobić żeby nie wysyłało formularza jak są puste pola ? Bo teraz mi wysyła z pustymi polami nawet, a mam walidacje w jquery
Turson
php
  1. if(!empty($_FILES['file']['name'])){
  2. //ok
  3. }
  4. else{
  5. //puste
  6. }


co do walidacji jquery to wrzuć na jsfiddle jak masz
jaskowice1
http://jsfiddle.net/xP7ey/

Nie ma tu niektórych styli.
Turson
Zobacz w konsoli przeglądarki czy nie sypie jakimś błędem
jaskowice1
Może być tak zrobiony warunek ?

  1. if(!empty($_POST[miasto]) && !empty($_POST[imie]) && !empty($_POST[telmail]) && !empty($_POST[doswiadczenie]) && !empty($_POST[textarea]) && !empty($_FILES['file']['name'])){
Turson
indeksy weż w 'miasto'
jaskowice1
  1. if(!empty($_POST[miasto] && $_POST[imie] )


..itd ?
Turson
Tak, miasto, imie itd. Każdy
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.