Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Formularz z wieloma załącznikami
Forum PHP.pl > Forum > Przedszkole
preibx
Witam
Proszę o podpowiedź co należy usprawnić w poniższym kodzie, aby można było przesyłać wiele załączników (na razie kod działa dla jednego załącznika).
Plik form.php
  1. <form name="formularz" method="post" action="send.php" enctype="multipart/form-data">
  2. <input type="hidden" name="wyslij" value="1" />
  3. <input type="hidden" name="max_file_size" value="60000000" />
  4. <input type="file" name="plik1" />
  5. <input type="file" name="plik2" />
  6. <input type="submit" value="Prześlij" />
  7. </form>

Plik send.php
  1. <?php
  2. //sprawdzenie czy załącznik pochodzi z formularza
  3. if ($_POST["wyslij"]==1){
  4. srand((double)microtime()*1000000);
  5. $znacznik = md5(uniqid(rand()));
  6.  
  7. $odbiorca="ades@email.pl";
  8. $tytul="E-mail z strony";
  9.  
  10. $redirectURL = "podziekowanie.php";
  11. $blad = "blad.php";
  12.  
  13. $tresclistu = "to jest reść listu"; 
  14.  
  15.  
  16. // definicja nagłówków
  17. $naglowki = "From: $nick <$email>\n";
  18. $naglowki .= "MIME-Version: 1.0\n";
  19. $naglowki .= "Content-Type: multipart/mixed;\n";
  20. $naglowki .= "\tboundary=\"___$znacznik==\"";
  21.  
  22. // nagłówki listu
  23. $tresc="--___$znacznik==\n";
  24. $tresc .="Content-Type: text/plain; charset=\"utf-8\"\n";
  25. $tresc .="Content-Transfer-Encoding: 8bit\n";
  26. $tresc .="\n$tresclistu\n";
  27.  
  28. // nagłówki i obsługa załącznika
  29. $plik_nazwa_tmp = $_FILES["plik1"]["tmp_name"];
  30. $plik_nazwa_oryginalna = $_FILES["plik1"]["name"];
  31. $plik_wielkosc = $_FILES["plik1"]["size"];
  32.  
  33. if (is_uploaded_file($plik_nazwa_tmp)){
  34. $tresc .="--___$znacznik==\n";
  35. $tresc .="Content-Type: image/gif\n";
  36. $tresc .="Content-Disposition: attachment;\n";
  37. $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
  38. $tresc .="Content-Transfer-Encoding: base64\n\n";
  39. $f = fopen($plik_nazwa_tmp,"rb");
  40. $dane = fread($f,filesize($plik_nazwa_tmp));
  41. fclose($f);
  42. $tresc .= chunk_split(base64_encode($dane));
  43. $tresc .="--___$znacznik==--\n";
  44. }
  45. // wysłanie listu
  46.  if (mail($odbiorca,$tytul,$tresc,$naglowki)){
  47. header("Location: ".$redirectURL);
  48. }
  49. else{
  50. header("Location: ".$blad);
  51. }
  52. }
  53. ?>

Z góry serdeczne dzięki za pomoc
nowotny
  1. <?php
  2. //sprawdzenie czy załącznik pochodzi z formularza
  3. if ($_POST["wyslij"]==1){
  4. srand((double)microtime()*1000000);
  5. $znacznik = md5(uniqid(rand()));
  6.  
  7. $odbiorca="ades@email.pl";
  8. $tytul="E-mail z strony";
  9.  
  10. $redirectURL = "podziekowanie.php";
  11. $blad = "blad.php";
  12.  
  13. $tresclistu = "to jest reść listu"; 
  14.  
  15.  
  16. // definicja nagłówków
  17. $naglowki = "From: $nick <$email>\n";
  18. $naglowki .= "MIME-Version: 1.0\n";
  19. $naglowki .= "Content-Type: multipart/mixed;\n";
  20. $naglowki .= "\tboundary=\"___$znacznik==\"";
  21.  
  22. // nagłówki listu
  23. $tresc="--___$znacznik==\n";
  24. $tresc .="Content-Type: text/plain; charset=\"utf-8\"\n";
  25. $tresc .="Content-Transfer-Encoding: 8bit\n";
  26. $tresc .="\n$tresclistu\n";
  27.  
  28. // nagłówki i obsługa załącznika
  29. foreach ($_FILES as $file){
  30.  $plik_nazwa_tmp = $file["tmp_name"];
  31.  $plik_nazwa_oryginalna = $file["name"];
  32. $plik_wielkosc = $file["size"];
  33.  
  34. if (is_uploaded_file($plik_nazwa_tmp)){
  35. $tresc .="--___$znacznik==\n";
  36. $tresc .="Content-Type: image/gif\n";
  37. $tresc .="Content-Disposition: attachment;\n";
  38. $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
  39. $tresc .="Content-Transfer-Encoding: base64\n\n";
  40. $f = fopen($plik_nazwa_tmp,"rb");
  41. $dane = fread($f,filesize($plik_nazwa_tmp));
  42. fclose($f);
  43. $tresc .= chunk_split(base64_encode($dane));
  44. $tresc .="--___$znacznik==--\n";
  45. }
  46. }
  47. // wysłanie listu
  48.  if (mail($odbiorca,$tytul,$tresc,$naglowki)){
  49. header("Location: ".$redirectURL);
  50. }
  51. else{
  52. header("Location: ".$blad);
  53. }
  54. }
  55. ?>

Pisane z głowy i nie sprawdzane więc może coś nie działać...
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.