Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [PHP] Formularz z załącznikami, Lak dodać dodatkowy załącznik do formularza
Arteline
post 13.09.2008, 11:22:34
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Witam.
Byłabym BARDZO wdzięczna jeśli ktoś mógłby mi podpowiedzieć jak dodać dodatkowe pole załącznika w skrypcie który podpinam poniżej.
Formularz
  1. <?php
  2. <form enctype="multipart/form-data" name=doit action="sendmail.php3" method=POST>
  3. <table cellpadding=0 cellspacing=0>
  4. <tr><td><b>Tob></td><td><input type="text" name="to" size=40></td></tr>
  5. <tr><td><b>Ccb></td><td><input type="text" name="cc" size=40></td></tr>
  6. <tr><td><b>Bccb></td><td><input type="text" name="bcc" size=40></td></tr>
  7. <tr><td><b>Fileb></td><td><input type=file name="attach" size=40></td></tr>
  8. <tr><td><b>Subjectb></td><td><input type="text" name="subject" size=40>
  9. </td></tr></table>
  10. <textarea name="body" rows=15 cols=50 wrap="message">
  11. </textarea>
  12. <input type="submit" name="sendmail" value="Send">
  13. ?>

sendmail
  1. <?
  2.  
  3. $mailheaders  = "Fro: $from\n";
  4. $mailheaders .= "Reply-To: $from\n";
  5. $mailheaders .= "Cc: $cc\n";
  6. $mailheaders .= "X-Mailer: PHP by www.mjs27.prv.pl\n";
  7.  
  8. $msg_body = stripslashes($body);
  9.  
  10. if ($attach != "none")
  11. {
  12.    $file = fopen($attach, "r");
  13.    $contents = fread($file, $attach_size);
  14.    $encoded_attach = chunk_split(base64_encode($contents));
  15.    fclose($file);
  16.        
  17.    $mailheaders .= "MIME-versio: 1.0\n";
  18.    $mailheaders .= "Content-typ: multipart/mixed; ";
  19.    $mailheaders .= "boundary=\"Message-Boundary\"\n";
  20.    $mailheaders .= "Content-transfer-encodin: 7BIT\n";
  21.    $mailheaders .= "X-attachment: $attach_name";
  22.  
  23.    $body_top = "--Message-Boundary\n";
  24.    $body_top .= "Content-typ: text/plain; charset=US-ASCII\n";
  25.    $body_top .= "Content-transfer-encodin: 7BIT\n";
  26.    $body_top .= "Content-descriptio: Mail message body\n\n";
  27.  
  28.    $msg_body = $body_top . $msg_body;
  29.  
  30.    $msg_body .= "\n\n--Message-Boundary\n";
  31.    $msg_body .= "Content-typ: $attach_type; name=\"$attach_name\"\n";        
  32.    $msg_body .= "Content-Transfer-Encodin: BASE64\n";
  33.    $msg_body .= "Content-dispositio: attachment; filename=\"$attach_name\"\n\n";
  34.    $msg_body .= "$encoded_attach\n";
  35.    $msg_body .= "--Message-Boundary--\n";
  36. }
  37.  
  38. mail($to, stripslashes($subject), $msg_body, $mailheaders);
  39. ?>


Marzeniem byłaby jeszcze informacja jak zablokować opcje wysyłania bez dodania choćby jednego załącznika.

Ten post edytował Arteline 16.09.2008, 12:44:38
Go to the top of the page
+Quote Post
webdice
post 13.09.2008, 11:35:02
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Proszę o dodanie tagu w tytule tematu.
Go to the top of the page
+Quote Post
Arteline
post 13.09.2008, 11:50:57
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Czyżby mój problem był aż tak trudny??
Wiele osób czytało posta, ale nikt nie podpowiedział jak temu zaradzić.
Może ewentualnie ktoś ma skrypt który przesyła wiele załączników z blokowaniem wysyłki bez załączników?questionmark.gif?

Ten post edytował Arteline 13.09.2008, 12:37:55
Go to the top of the page
+Quote Post
JoShiMa
post 15.09.2008, 10:02:29
Post #4





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Zgadyję, że chodzi Ci o wykorzystanie i obsługę pola typu <input type="file" name="zalacznik">


--------------------
Go to the top of the page
+Quote Post
Arteline
post 15.09.2008, 14:54:50
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Cytat(JoShiMa @ 15.09.2008, 11:02:29 ) *
Zgadyję, że chodzi Ci o wykorzystanie i obsługę pola typu <input type="file" name="zalacznik">



Dokładnie o to. W formularzu jest jeden załącznik a ja potrzebuję żeby były dwa i oba schodziły w jednym mailu. Próbowałam mieszać coś z tym skryptem, ale uparcie schodzi tylko jeden załącznik. Szczytem mojego szczęścia było by jeszcze, aby nie dało sie wysłać formularza bez choćby jednego załącznika i objawiało się to odpowiednim komunikatem typu "aby wysłać musisz dodać załącznik".
Go to the top of the page
+Quote Post
JoShiMa
post 15.09.2008, 15:00:32
Post #6





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Czyżby trzeba było wstawić i obsłużyć dwa pola typu <input type="file" name="attach" size=40> questionmark.gif


--------------------
Go to the top of the page
+Quote Post
Arteline
post 15.09.2008, 17:47:51
Post #7





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Cytat(JoShiMa @ 15.09.2008, 16:00:32 ) *
Czyżby trzeba było wstawić i obsłużyć dwa pola typu <input type="file" name="attach" size=40> questionmark.gif



TAK - DOKŁADNIE TAK. Wstawiałam dokladnie taką dodatkową linię i w formularzu była opcja drugiego załącznika.
Niestety przerosła mnie przeróbka pliku "sendmail" - nadal wysyłał formularz tylko pierwszy załącznik.sad.gif

Jeszcze raz MOOOOOCNO proszę.
Jeśli ten skrypt nie jest do przerobienia to może ktoś zna jakiś spełniający moje potrzeby??

Ten post edytował Arteline 15.09.2008, 15:42:39
Go to the top of the page
+Quote Post
Cienki1980
post 15.09.2008, 19:45:07
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

Ostrzeżenie: (0%)
-----


Można wysłać maila z dwoma załącznikami.

Ja korzystałem przy tym z klasy activeMailLib.php Nie wiem czy to jest dalej rozwijane, jeżeli nie znajdziesz na necie to wyślij mi PW z adresem email to podeśle Ci tę klasę.


--------------------
404
Go to the top of the page
+Quote Post
Arteline
post 15.09.2008, 20:15:32
Post #9





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Cytat(Cienki1980 @ 15.09.2008, 20:45:07 ) *
Można wysłać maila z dwoma załącznikami.

Ja korzystałem przy tym z klasy activeMailLib.php Nie wiem czy to jest dalej rozwijane, jeżeli nie znajdziesz na necie to wyślij mi PW z adresem email to podeśle Ci tę klasę.



Dzięki za info, ale narazie nie znalazłem opisu tej klasy.
Możesz mi powiedzieć czy jest tam możliwość zablokowania wysyłki bez dodania choć jednego załącznika??
Go to the top of the page
+Quote Post
Cienki1980
post 15.09.2008, 20:45:08
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

Ostrzeżenie: (0%)
-----


Cytat(Arteline @ 15.09.2008, 21:15:32 ) *
Możesz mi powiedzieć czy jest tam możliwość zablokowania wysyłki bez dodania choć jednego załącznika??


To trochę dziwne pytanie skoro pliki do załączników pobierasz z formularza. Jeżeli tak jest, to sprawdzasz czy przynajmniej jeden plik został wysłany ( z tablicy $_FILES[] ) , jeżeli jest to mail zostaje wysłany, jeżeli nie to nie wysyłasz i wyświetlasz stosowny komunikat.


--------------------
404
Go to the top of the page
+Quote Post
JoShiMa
post 16.09.2008, 09:04:28
Post #11





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Cytat(Arteline @ 15.09.2008, 18:47:51 ) *
TAK - DOKŁADNIE TAK. Wstawiałam dokladnie taką dodatkową linię i w formularzu była opcja drugiego załącznika.
Niestety przerosła mnie przeróbka pliku "sendmail" - nadal wysyłał formularz tylko pierwszy załącznik.sad.gif

Jeszcze raz MOOOOOCNO proszę.
Jeśli ten skrypt nie jest do przerobienia to może ktoś zna jakiś spełniający moje potrzeby??


A może ta druga linijka powinna mieć inną wartość atrybutu name?


--------------------
Go to the top of the page
+Quote Post
Arteline
post 16.09.2008, 10:35:53
Post #12





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Cytat(JoShiMa @ 16.09.2008, 10:04:28 ) *
A może ta druga linijka powinna mieć inną wartość atrybutu name?


Do tego doszłam i wyświetlało się pole drugiego załącznika.
Problem tkwi w sendmail.php - nie wiem co tam dopisać aby drugi załącznik dochodził na maila.
Skopiowanie odpowiedniej linijki i zmienienie nazwy niestety nie pomogło:(

Ludki - jestem zrospaczona. Zapłace tylko pomóżcie.
Jeszcze raz opisuje co potrzebuje.
Formulaż mailowy z opcja wysłania 2 załączników.
Brak mozliwości wysłania takiej wiadomości jeśli nie zawiera jednego załącznika
Go to the top of the page
+Quote Post
Cienki1980
post 16.09.2008, 10:50:43
Post #13





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

Ostrzeżenie: (0%)
-----


klik do sciagniecia tego co potrzeba


W powyższej paczce masz wszystkie potrzebne pliki, wraz z działającym wysyłaniem maila z dwoma załącznikami.

Nie jest to gotowiec, nie ma formularza no ale na aż takiego gotowca nie ma co liczyć. Miałaś dużo podpowiedzi a nie pokazałaś ani jednej poprawki swojego kodu.

Pokaż, jak próbujesz a poszukamy razem błędów i nakierujemy na poprawne rozwiązanie.


--------------------
404
Go to the top of the page
+Quote Post
Arteline
post 16.09.2008, 11:49:26
Post #14





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Cytat(Cienki1980 @ 16.09.2008, 11:50:43 ) *
Pokaż, jak próbujesz a poszukamy razem błędów i nakierujemy na poprawne rozwiązanie.


Oczywiście masz rację. Dołączam moje wypociny.
FORMULARZ
  1. <?php
  2. <form enctype="multipart/form-data" name=doit action="sendmail.php3" method=POST>
  3. <table cellpadding=0 cellspacing=0>
  4. <tr><td><b>Tob></td><td><input type="text" name="to" size=40></td></tr>
  5. <tr><td><b>Ccb></td><td><input type="text" name="cc" size=40></td></tr>
  6. <tr><td><b>Bccb></td><td><input type="text" name="bcc" size=40></td></tr>
  7. <tr><td><b>Fileb></td>
  8.  <td><input type=file name="attach" size=40 /><br /><input type=file name="attach1" size=40 /></td>
  9. </tr>
  10. <tr><td><b>Subjectb></td><td><input type="text" name="subject" size=40>
  11. </td></tr></table>
  12. <textarea name="body" rows=15 cols=50 wrap="message">
  13. </textarea>
  14. <input type="submit" name="sendmail" value="Send">
  15. ?>


SENDMAIL
  1. <?
  2.  
  3. $mailheaders  = "Fro: $from\n";
  4. $mailheaders .= "Reply-To: $from\n";
  5. $mailheaders .= "Cc: $cc\n";
  6. $mailheaders .= "X-Mailer: PHP by www.mjs27.prv.pl\n";
  7.  
  8. $msg_body = stripslashes($body);
  9.  
  10. if ($attach != "none")
  11. if ($attach1 != "none")
  12. {
  13. $file = fopen($attach, $attach1 "r");
  14. $contents = fread($file, $attach_size, $attach1_size);
  15. $encoded_attach = chunk_split(base64_encode($contents));
  16. fclose($file);
  17.  
  18. $mailheaders .= "MIME-versio: 1.0\n";
  19. $mailheaders .= "Content-typ: multipart/mixed; ";
  20. $mailheaders .= "boundary=\"Message-Boundary\"\n";
  21. $mailheaders .= "Content-transfer-encodin: 7BIT\n";
  22. $mailheaders .= "X-attachment: $attach_name";
  23. $mailheaders .= "X-attachment: $attach1_name";
  24.  
  25. $body_top = "--Message-Boundary\n";
  26. $body_top .= "Content-typ: text/plain; charset=US-ASCII\n";
  27. $body_top .= "Content-transfer-encodin: 7BIT\n";
  28. $body_top .= "Content-descriptio: Mail message body\n\n";
  29.  
  30. $msg_body = $body_top . $msg_body;
  31.  
  32. $msg_body .= "\n\n--Message-Boundary\n";
  33. $msg_body .= "Content-typ: $attach_type; name=\"$attach_name\"\n";
  34. $msg_body .= "Content-typ: $attach_type; name=\"$attach1_name\"\n";
  35. $msg_body .= "Content-Transfer-Encodin: BASE64\n";
  36. $msg_body .= "Content-dispositio: attachment; filename=\"$attach_name\"\n\n";
  37. $msg_body .= "Content-dispositio: attachment; filename=\"$attach1_name\"\n\n";
  38. $msg_body .= "$encoded_attach\n";
  39. $msg_body .= "$encoded_attach1\n";
  40. $msg_body .= "--Message-Boundary--\n";
  41. }
  42.  
  43. mail($to, stripslashes($subject), $msg_body, $mailheaders);
  44. ?>


Ten post edytował Arteline 16.09.2008, 12:43:37
Go to the top of the page
+Quote Post
Cienki1980
post 16.09.2008, 12:46:33
Post #15





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

Ostrzeżenie: (0%)
-----


Pliki odbierane z formularza nie są przekazywane przez post tak jak zwykłe pola. Czyli $_POST['attachment'] NIE zawiera pliku. Dane te są w tablicy $_FILES. Zrób print_r($_FILES) po wysłaniu formularza i zobaczysz jakie dane tam są przechowywane. Tego używaj jako pliku który dołączasz do wiadomości.


--------------------
404
Go to the top of the page
+Quote Post
Arteline
post 16.09.2008, 14:42:23
Post #16





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Widać moja edukacja jest zupełnie w lesie:(
Zapewne to jest odpowiedź na moje problemy, ale dla mnie to co napisałeś to język Suahili:(

Mógłbys wkleić odpowiednia poprawke w mój kod?? PLISS

Pełna desperacji - rozumiejąca brak czasu userów tego forum przekierowuję do działu "KUPIĘ" na MÓJ POST
Bardzo możliwe że nie macie czasu tłumaczyć laikowi, ale może ktoś będzie mógł zrobić to na spokojnie za gratyfikację.
Go to the top of the page
+Quote Post
batman
post 16.09.2008, 14:48:42
Post #17





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Temat zamykam. Jeśli jest ktoś chętny na wykonanie takiego skryptu odsyłam do działu kupię.

edit
Jeśli ktoś zdecyduje się na napisanie rozwiązania, to niech napisze do mnie PW, otworzę temat.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post

Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 23:02