Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Proźba o pomoc w edycji skryptu
Forum PHP.pl > Forum > Przedszkole
marjaan
Witam serdecznie

mój skrypt wysyła maila i 5 załączników, ale jest spora niedogodność, mianowicie...
jeśli do formularza dołączę tylko jeden załącznik, to skrypt wyśle mi na maila i tak 5 załączników... z tym że jeden to będzie faktycznie załączony do formularza plik...
a pozostałe cztery to będą puste pliki TXT z kolejnymi nazwami... poniżej pokażę jak to wygląda...

Załączniki:
bezNazwy1.txt (0,20 kB) Zapisz <<< to jest plik zawierający treść maila
angielski.doc (41,46 kB) Zapisz <<< to jest faktycznie załączony przeze mnie do formularza załącznik
bezNazwy2.txt (0,00 kB) Zapisz <<< a reszta to puste pliki txt, wysłane w miejsce nie załączonych załączników
bezNazwy3.txt (0,00 kB) Zapisz
bezNazwy4.txt (0,00 kB) Zapisz
bezNazwy5.txt (0,00 kB) Zapisz


Chciałbym oczywiście żeby dochodziło tylko tyle załączników ile faktycznie załączę, bez tych zbędnych pustych załączników, lub aby skrypt ignorował załączniki o zerowej wielkości
Czy wiesz może jaką funkcję trzeba dopisać, co zmienić w kodzie, by osiągnąć ten cel?

Oto aktualny wygląd skryptu:

  1. <?php
  2. $arrLocale = array( "pl_PL", "polish_pol" );
  3. setlocale( LC_ALL, $arrLocale );
  4.  
  5. $data = strftime("%A, %d %B %Y");
  6. $boundary = "-->===_54654747_===<---->>4255==_";
  7.  
  8. $head = "From: $email\n";
  9. $head = $head . "Reply-To: $email\n";
  10. $head = $head . "X-Mailer: PHP\n";
  11. $head = $head . "X-Sender: $email\n";
  12. $head = $head . "MIME-version: 1.0\n";
  13. $head = $head . "Content-type: multipart/mixed; ";
  14. $head = $head . "boundary=\"$boundary\"\n";
  15. $head = $head . "Content-transfer-encoding: 7BIT\n";
  16. $head = $head . "X-attachments: $filename_name;\n\n";
  17.  
  18.  
  19. $mesg = "--" . $boundary . "\n";
  20. $mesg = $mesg . "Content-Type: text/plain; charset=\"iso-8859-2\"\n\n";
  21. $mesg = $mesg
  22.  
  23. .$numer = "Numer zlecenia: $numer" ." "
  24. .$data1 = "Data: $data1" ."\n"
  25. .$zleceniodawca = "Zleceniodawca: $zleceniodawca" ."\n"
  26. .$z_jezyka = "Tlumaczenie z jezyka: $z_jezyka" ." "
  27. .$na_jezyk = "na jezyk: $na_jezyk" ."\n"
  28. .$dane = "Dane do rachunku: $dane" ."\n"
  29. .$telefon = "Telefon: $telefon" ."\n"
  30. .$uwagi = "Uwagi: $uwagi" ."\n"
  31. .$www = "Strona www: $www" ."\n"
  32. .$email = "E-MAIL: $email" ."\n"
  33. .$data = "Wysłano dnia: $data" ."\n";
  34.  
  35. // plik1
  36.  
  37. $mesg = $mesg . "--" . $boundary . "\n";
  38. $mesg = $mesg . "Content-type: " . $filename1_type . "; name=\"$filename1_name\";\n";
  39. $mesg = $mesg . "Content-Transfer-Encoding: base64\n";
  40. $mesg = $mesg . "Content-disposition: attachment; filename= \"$filename1_name\"\n\n";
  41. $mesg = $mesg . fileopenanddecode($filename1) . "\n";
  42. $mesg = $mesg . "--" . $boundary . "\n";
  43.  
  44. // plik2
  45.  
  46. $mesg = $mesg . "--" . $boundary . "\n";
  47. $mesg = $mesg . "Content-type: " . $filename2_type . "; name=\"$filename2_name\";\n";
  48. $mesg = $mesg . "Content-Transfer-Encoding: base64\n";
  49. $mesg = $mesg . "Content-disposition: attachment; filename= \"$filename2_name\"\n\n";
  50. $mesg = $mesg . fileopenanddecode($filename2) . "\n";
  51. $mesg = $mesg . "--" . $boundary . "\n";
  52.  
  53. // plik3
  54.  
  55. $mesg = $mesg . "--" . $boundary . "\n";
  56. $mesg = $mesg . "Content-type: " . $filename3_type . "; name=\"$filename3_name\";\n";
  57. $mesg = $mesg . "Content-Transfer-Encoding: base64\n";
  58. $mesg = $mesg . "Content-disposition: attachment; filename= \"$filename3_name\"\n\n";
  59. $mesg = $mesg . fileopenanddecode($filename3) . "\n";
  60. $mesg = $mesg . "--" . $boundary . "\n";
  61.  
  62. // plik4
  63.  
  64. $mesg = $mesg . "--" . $boundary . "\n";
  65. $mesg = $mesg . "Content-type: " . $filename4_type . "; name=\"$filename4_name\";\n";
  66. $mesg = $mesg . "Content-Transfer-Encoding: base64\n";
  67. $mesg = $mesg . "Content-disposition: attachment; filename= \"$filename4_name\"\n\n";
  68. $mesg = $mesg . fileopenanddecode($filename4) . "\n";
  69. $mesg = $mesg . "--" . $boundary . "\n";
  70.  
  71. // plik5
  72.  
  73. $mesg = $mesg . "--" . $boundary . "\n";
  74. $mesg = $mesg . "Content-type: " . $filename5_type . "; name=\"$filename5_name\";\n";
  75. $mesg = $mesg . "Content-Transfer-Encoding: base64\n";
  76. $mesg = $mesg . "Content-disposition: attachment; filename= \"$filename5_name\"\n\n";
  77. $mesg = $mesg . fileopenanddecode($filename5) . "\n";
  78. $mesg = $mesg . "--" . $boundary . "-- \n";
  79.  
  80.  
  81.  
  82. function fileopenanddecode($file) {
  83. if (is_readable($file)) {
  84. $fd = fopen($file, "r");
  85. $plik = fread($fd, filesize($file));
  86. $encoded = chunk_split(base64_encode($plik));
  87. fclose($fd);
  88. }
  89. return $encoded;
  90. }
  91.  
  92. mail("mojmail@wp.pl", "ZLECENIE ON LINE", $mesg , $head);
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99. ?>
  100.  
  101. <html>
  102.  
  103. <head>
  104. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  105. <meta http-equiv="Content-Language" content="pl">
  106. <link rel="Shortcut icon" href="images/ikonka.ico" />
  107. <title>Zlecenie</title>
  108. </head>
  109.  
  110. <body bgcolor="#9D826D">
  111.  
  112. <p align="left">
  113. <p></p>
  114. <p></p>
  115. <font face="Arial" style="font-size: 14px" color="#FFFFFF"><b>Dziękuję, Twoje dane zostały przesłane!</b></font>
  116. <p></p>
  117. <button name="B3" onclick="java script:history.back();">Kolejne zlecenie
  118. </button></p>
  119. </body>
  120.  
  121. </html>
Puzi
Proponuję Ci sprawdzać przed wysłaniem meila czy plik został załączony. Możesz to zrobić za pomocą tablicy $_FILES....A sprawdzisz to tak:$_FILES['plik']['error'] i jeśli zawartość tego elementu wynosi 4 to oznacza że plik nie został wybrany.
marjaan
Do zamknięcia. Problem już rozwiązany.

@Puzi
Dziękuję za próbę pomocy
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.