Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Gromadzenie tekstu i plikow
Forum PHP.pl > Forum > Przedszkole
Matiash
Witam, otoz chcialbym umiescic na moejej stronie formularz w ktorym uzytkownicy serwisu mogliby napisac temat wiadomosci, tresc wiadomosci i dolaczoyc kilka plikow ( okolo 10, ale za to do 200kb ) i zeby to wszystko bylo zapisane na serwerze lub wyslane na maila. Probowalem juz wiele sposobow. ( phpmailer, funkcja mail- tu prawie mi sie udalo ale zawsze wysyla mi tylko jeden plik + tekst a nie wszystkie zalaczone ) ale nikt mi nie pomogl, siedzie juz nad tym od dluzszego czasu. Pisalem kilka innych postow, odpowiedzi albo byly niejasne albo w ogole. Inni pisali krotko: skorzystaj z phpmailer... - lecz nie potrafili podac zadnych konkretow.

Czy mozecie mi cos poradzic ?
rojmarek
Cytat(Matiash @ 8.04.2007, 21:33:02 ) *
zeby to wszystko bylo zapisane na serwerze lub wyslane na maila.

lub? na serwerze tez Ci tego nie zapisuje? jak są takie problemy, to nie mozesz wysłać 10 maili... wieczorem siąde, bo teraz nie mam czasu, to zobacze jak to jest z wieksza iloscia pliku przy wysyłce...
Matiash
-jak korzystam z funkcji mail to niestety ale zawsze wysyla mi tylko jeden zalcznik + tekst z formularza, probowalem juz wszystkeigo i nie da sie kilku bo albo serwer sie wiesza albo dochodzi tylko jeden. Co do zapisywania danych na serwerze to nie mam pomyslu jak to zrobic zeby tekst + pliku dolaczone (chodzi o 10 obrazkow jpg ) w formularzu byly jakos sensownie zapisywane. Ze jak Jan Kowalski mi posle tekst + te kilka zalczinikow i wszystko to zostanie zapisane w folderze upload, a nastepnie Jan Nowak zrobi to samo i jeszcze pare innych osob to bede mial straszny balagan w tym folderze upload i dojdzie do tego ze nie bede wiedzial czyje zalczniki sa od kogo. Idealnym rozwiazanie byloby ze jak ktos wpisuje w formularzu np tytul: Jan Kowalski, to automatycznie tworzy mi sie folder na serwerze "Jan Kowalski " i w nim zostaje zapisana wlasciwa tresc formularza oraz te zalczniki.
-Natomiast jesli tresc formularza + zalaczniki bylyby wysylane na maila, to automatycznie mialbym to segregowane.

Szczerze to jest mi obojetne ktora metode zastosuje, choc teraz wydaje mi sie ze upload plikow bylby lepszym rozwiazaniem

----------------------------
Sorki ze tak sie rozpisalem ale chcialem opisac dokladnie moj problem, bo nie mam kompletnie zadnego pomyslu jak to zrobic. Mam nadzieje na Wasza pomoc winksmiley.jpg
rojmarek
generalnie wszystko o czym mówisz jest możliwe do osiągnięcia :]
zaraz sobie popróbuje wysłać więcej załaczników;]
co mi przyszło do głowy: możesz pliki (jakkolwiek) zapisać na serwerze, no a na maila sobie wysyłać linki do tych plików...

jak potrzebujesz dokładniejszej pomocy to napisz pm'ke, to może sie jakos dogadamy ;]
Matiash
i jak udalo Ci sie ?

Uzywales funkcji mail () ?

rojmarek a jakiej funkcji trzeba uzyyc zeby "co mi przyszło do głowy: możesz pliki (jakkolwiek) zapisać na serwerze, no a na maila sobie wysyłać linki do tych plików..."

Takie cos jak napisales tez odpowiadalo by mi...

Co do mojego formularza to mam takie cos i dziala ale tylko z jedneym zalacznikiem

formularz.htm
  1. <FORM NAME="zalacznik" METHOD="post" ACTION="wyslij.php" ENCTYPE="multipart/form-data">
  2. <input type="hidden" name="wyslij" value="1" />
  3. <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
  4. <INPUT type="file" name="plik1">
  5. <INPUT TYPE="SUBMIT" VALUE="Wyślij zalacznik">
  6. </FORM>


wyslij.php
  1. <?php
  2. //sprawdzenie czy załącznik pochodzi z formularza
  3. if ($_POST["wyslij"]==1)
  4. {
  5. srand((double)microtime()*1000000);
  6. $znacznik = md5(uniqid(rand()));
  7.  
  8. // dane o odbiorcy, nadawcy
  9. $odbiorca="nazwa-twojego-maila@domena.pl";
  10. $tytul="Mail z zalaczniekiem";
  11. $nadawca = "Mail ze strony";
  12. $nadawca_mail="mail-ze-strony@domena.pl";
  13.  
  14. // treść listu
  15. $tresclistu = "tutaj piszesz całą treść maila";
  16.  
  17. // definicja nagłówków
  18. $naglowki = "From: $nadawca <$nadawca_mail>n";
  19. $naglowki .= "MIME-Version: 1.0n";
  20. $naglowki .= "Content-Type: multipart/mixed;n";
  21. $naglowki .= "tboundary="___$znacznik=="";
  22.  
  23. // nagłówki listu
  24. $tresc="--___$znacznik==n";
  25. $tresc .="Content-Type: text/plain; charset="iso-8859-2"n";
  26. $tresc .="Content-Transfer-Encoding: 8bitn";
  27. $tresc .="n$tresclistun";
  28.  
  29. // nagłówki i obsługa załącznika
  30. $plik_nazwa_tmp = $_FILES["plik1"]["tmp_name"];
  31. $plik_nazwa_oryginalna = $_FILES["plik1"]["name"];
  32. $plik_wielkosc = $_FILES["plik1"]["size"];
  33.  
  34. if (is_uploaded_file($plik_nazwa_tmp))
  35. {
  36. $tresc .="--___$znacznik==n";
  37. $tresc .="Content-Type: image/gifn";
  38. $tresc .="Content-Disposition: attachment;n";
  39. $tresc .=" filename="$plik_nazwa_oryginalna"n";
  40. $tresc .="Content-Transfer-Encoding: base64nn";
  41. $f = fopen($plik_nazwa_tmp,"rb");
  42. $dane = fread($f,filesize($plik_nazwa_tmp));
  43. fclose($f);
  44. $tresc .= chunk_split(base64_encode($dane));
  45. $tresc .="--___$znacznik==--n";
  46. }
  47.  
  48. // wysłanie listu
  49.  if (mail($odbiorca,$tytul,$tresc,$naglowki))
  50.  {
  51.  print "E-mail z załącznikiem został wysłany poprawnie.";
  52.  }
  53.  else
  54.  {
  55.  print "E-mail NIE został wysłany poprawnie.
  56.  <br>Prosimy o <a href="java script:history.back();">powrót</a> i wysłanie e-maila ponownie.";
  57.  }
  58. }
  59. ?>


Jednak podczas proby wyslania kilku zalacznikow tzn powielilem ten fragment kodu ( oczywiscie ze zmienionymi nazwami z "plik" na np. "plik1" )

  1. <?php
  2. // nagłówki i obsługa załącznika
  3. $plik_nazwa_tmp = $_FILES["plik1"]["tmp_name"];
  4. $plik_nazwa_oryginalna = $_FILES["plik1"]["name"];
  5. $plik_wielkosc = $_FILES["plik1"]["size"];
  6.  
  7. if (is_uploaded_file($plik_nazwa_tmp))
  8. {
  9. $tresc .="--___$znacznik==n";
  10. $tresc .="Content-Type: image/gifn";
  11. $tresc .="Content-Disposition: attachment;n";
  12. $tresc .=" filename="$plik_nazwa_oryginalna"n";
  13. $tresc .="Content-Transfer-Encoding: base64nn";
  14. $f = fopen($plik_nazwa_tmp,"rb");
  15. $dane = fread($f,filesize($plik_nazwa_tmp));
  16. fclose($f);
  17. $tresc .= chunk_split(base64_encode($dane));
  18. $tresc .="--___$znacznik==--n";
  19. }
  20. ?>


nie dzialalo wyslanie kilku zalacznikow.


Oczywiscie Twoje rozwiazania tez sa dobre tylko jak zrobic zeby mnie sie link wysylal na maila do plikow a tekst formularza na moja skrzynke. Takie cos byloby idealne !
Kicok
a próbowałeś wysłać maila z postaci:

Kod
--___boundary==
nagłówki pierwszego załącznika

zawartość pierwszego załącznika w base64
--___boundary==
nagłówki drugiego załącznika

zawartość drugiego załącznika w base64
--___boundary==
nagłówki trzeciego załącznika

zawartość trzeciego załącznika w base64
(...)
--___boundary==
nagłówki treści maila

treść maila w HTML


Nie pamiętam już gdzie się wstawiało dwa "entery", a gdzie jeden, ale to powinieneś znaleźć już na necie (np. podpatrując komentarze w manualu: mail" title="Zobacz w manualu PHP" target="_manual ;])
Matiash
probowalem nie wywala zadnego bledu ale przychodzi tylko jeden zalacznik.

A powiedzcie mi, jak jakiej funkcji uzyc zeby np dostac w mailu nie zalaczniki a linki do zuploadowanych plikow na serwerze ?
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.