Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysyłanie zdjęć na email poprzez formularz
Forum PHP.pl > Forum > PHP
kamil1234735
Witam,
mam sobie plik php z formularzem który wysyła na podany adres email jeden załącznik (zdjęcie) i jakieś tam dodatkowe informacje (Autor, email, opis).
Mam problem ponieważ nie wiem jak przerobić ten kod żeby można było wysyłać np. ze 4 zdjęcia jednocześnie.
Już cały dzień się z tym męczę i już nie mam na to siły . Znam tylko jakieś tam podstawy PHP.
Mógłby ktoś pomóc lub nakierować jak to zrobić?
A jeśli nie da się z tym nic zrobić to czy PHPMailer byłby do tego odpowiedni?

Mam nadzieję że ktoś pomoże. smile.gif


  1. <h1>Prześlij nam swoje zdjęcia</h1>
  2.  
  3.  
  4. <?php
  5.  
  6. $wynik = safe_query("SELECT * FROM ".PREFIX."contact");
  7. $dr = mysql_fetch_array($wynik);
  8.  
  9. $mail = $dr['email'];
  10.  
  11.  
  12. //sprawdzenie czy załącznik pochodzi z formularza
  13. if ($_POST["wyslij"]==1) {
  14.  
  15.  
  16.  
  17.  
  18. $plik_nazwa_tmp = $_FILES["plik1"]["tmp_name"];
  19. $plik_nazwa_oryginalna = $_FILES["plik1"]["name"];
  20. $plik_wielkosc = $_FILES["plik1"]["size"];
  21.  
  22.  
  23. $autor = htmlspecialchars(stripslashes(strip_tags(trim($_POST["autor"]))), ENT_QUOTES);
  24. $email = htmlspecialchars(stripslashes(strip_tags(trim($_POST["email"]))), ENT_QUOTES);
  25. $tresc_ = $_POST["tresc"];
  26.  
  27. $tresc = str_replace('\r\n','<br />',$tresc_);
  28.  
  29. //Sprawdzanie czy plik istnieje, jesli tak to sprawdza rozszerzenie
  30. if($_FILES["plik1"]["name"]!='') {
  31.  
  32. if(preg_match('@(.*)\.(png|jpg|jpeg|gif)@i', $_FILES["plik1"]["name"])) {
  33. //plik jest obrazkiem
  34. }
  35. else{
  36. $blad++;
  37. echo '<p class="blad">Niepoprawny format zdjęcia. Dozwolone formaty to: jpg, png, gif</p>';
  38. }
  39. }
  40.  
  41.  
  42.  
  43.  
  44. // system sprawdza czy wszystkie pola zostały wypełnione
  45. if (!$autor) {
  46. $blad++;
  47. echo '<p class="blad">Proszę wpisać autora.</p>';
  48. }
  49. if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$", $email)) {
  50. $blad++;
  51. echo '<p class="blad">Proszę wprowadzić poprawnie adres email.</p>';
  52. }
  53. if (!$tresc) {
  54. $blad++;
  55. echo '<p class="blad">Proszę dodać opis.</p>';
  56. }
  57.  
  58. if($blad>0) echo '<div class="clear"> </div>';
  59.  
  60. // jeżeli nie ma błędu, to wiadomość e-mail zostaje wysłana
  61. if ($blad == 0) {
  62.  
  63.  
  64.  
  65. srand((double)microtime()*1000000);
  66. $znacznik = md5(uniqid(rand()));
  67.  
  68.  
  69.  
  70.  
  71.  
  72. // dane o odbiorcy, nadawcy
  73. $odbiorca = $mail;
  74. $tytul = "Zdjęcia do akceptacji.";
  75. $nadawca = $autor;
  76. $nadawca_mail = $email;
  77.  
  78. // treść listu
  79. $tresclistu = "
  80. Autor: $imie<br />
  81. E-mail: $email<br />
  82. <br />
  83. Treść: $tresc
  84.  
  85. ";
  86.  
  87.  
  88. // definicja nagłówków
  89. $naglowki = "From: $nadawca <$nadawca_mail>\n";
  90. $naglowki .= "MIME-Version: 1.0\n";
  91. $naglowki .= "Content-Type: multipart/mixed;\n";
  92. $naglowki .= "\tboundary=\"___$znacznik==\"";
  93.  
  94. // nagłówki listu
  95. $tresc="--___$znacznik==\n";
  96. $tresc .="Content-Type: text/html; charset=\"UTF-8\"\n";
  97. $tresc .="Content-Transfer-Encoding: 8bit\n";
  98. $tresc .="\n$tresclistu\n";
  99.  
  100.  
  101. if (is_uploaded_file($plik_nazwa_tmp))
  102. {
  103. $tresc .="--___$znacznik==\n";
  104. $tresc .="Content-Type: multipart/mixed;\n";
  105. $tresc .="Content-Disposition: attachment;\n";
  106. $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
  107. $tresc .="Content-Transfer-Encoding: base64\n\n";
  108. $f = fopen($plik_nazwa_tmp,"rb");
  109. $dane = fread($f,filesize($plik_nazwa_tmp));
  110. fclose($f);
  111. $tresc .= chunk_split(base64_encode($dane));
  112. $tresc .="--___$znacznik==--\n";
  113. }
  114.  
  115.  
  116.  
  117.  
  118.  
  119. // wysłanie listu
  120. if (mail($odbiorca,$tytul,$tresc,$naglowki)) {
  121. echo "<p class=\"poprawnie\">E-mail został wysłany poprawnie. Po akceptacji zdjęcia pojawią się na stronie.</p>";
  122. } else {
  123. echo "<p class=\"blad\">E-mail NIE został wysłany poprawnie. Spróbuj ponownie lub skontaktuj się z administratorem.</p>";
  124. }
  125.  
  126. }
  127. }
  128. ?>
  129.  
  130.  
  131.  
  132.  
  133. <div class="dodaj_">
  134.  
  135.  
  136. <form name="zalacznik" class="form" action="" method="post" enctype="multipart/form-data">
  137.  
  138.  
  139.  
  140. <input type="hidden" name="wyslij" value="1" />
  141. <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
  142.  
  143. <p><span>Autor:</span> <input type="text" name="autor" value="<?php echo $_POST['autor'] ?>" /></p>
  144. <p><span>Email:</span> <input type="text" name="email" value="<?php echo $_POST['email'] ?>" /></p>
  145. <p>Dodaj krótką treść, która ma się pojawić przy zdjęciu. Możesz też podać linki do wielu zdjęć.</p>
  146. <p><textarea id="dodaj_tresc" name="tresc"></textarea></p>
  147. <p>Dodaj zdjęcie <small>(Wymagany format pliku to: jpg, png, gif)</small></p>
  148. <p><input type="file" name="plik1"/></p>
  149. <p><input id="wyslij" type="submit" value="Wyślij" /></p>
  150.  
  151.  
  152.  
  153. </form>
  154.  
  155. </div>
nospor
Cytat
A jeśli nie da się z tym nic zrobić to czy PHPMailer byłby do tego odpowiedni?
No napewno by ci ułatwił sprawę, gdyż tam gdy chcesz wywołujesz metodę AddAttachment() (czy jakos tak) i wszystko masz jasne i czytelne. Nie musisz się bawić w żadne nagłówki i kombinowanie.
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.