Forum Katalogu Ciekawych Stron Strona Główna  Forum Katalogu Ciekawych Stron Strona Główna  
 
FAQ  FAQ   Szukaj  Szukaj   Użytkownicy  Użytkownicy   Ranking systemów  Ranking systemów   Grupy  Grupy  
 
Rejestracja  ::  Zaloguj Zaloguj się, by sprawdzić wiadomości
 
Forum Katalogu Ciekawych Stron Strona Główna » PHP / MySQL oraz inne bazy danych » formularz z 4 załącznikami

Napisz nowy temat  Odpowiedz do tematu Idź do strony 1, 2  Następny
 formularz z 4 załącznikami « Zobacz poprzedni temat :: Zobacz następny temat » 
Autor Wiadomość
Ismena
PostWysłany: 10 Sty 2006, 20:36    Temat postu: formularz z 4 załącznikami Odpowiedz z cytatem Zacytuj zaznaczone

Nowicjusz
Nowicjusz

Dołączył: 10 Sty 2006
Posty: 7


Witam
Poprosze o pomoc, znam PHP bardzo slabo Embarassed , potrzebuje napisac formularz który będzie wysyłany na maila z zalacznikami. Wiem ze tego typu problem byl juz wiele razy pisany ale nigdzie nie moge znalezc skryptu dla wiecej niz jednego zalacznika.

Mam taki formularz:
Kod:
<FORM ENCTYPE ="multipart/form-data" METHOD="POST" ACTION="a.php">
<INPUT TYPE="hidden" name=MAX_FILE_SIZE" value="10000000">
 DANE OSOBOWE


Imię <INPUT type="text" name="imie">
Nazwisko <INPUT type="text" name="nazwisko">
Adres e-mail <INPUT type="text" name="mail">
Telefon <INPUT type="text" name="tel"> <br>
Data urodzenia:<br> Dzień<INPUT type="text" name="dd">Miesiąc<select name="mm">
<option>Styczeń</option>
<option>Luty</option>
<option>Marzec</option>
<option>Kwiecień</option>
<option>Maj</option>
<option>Czerwiec</option>
<option>Lipiec</option>
<option>Sierpień</option>
<option>Wrzesień</option>
<option>Październik</option>
<option>Listopad</option>
<option>Grudzień</option>
</select>
Rok<INPUT type="text" name="yy"><p>
Znajomość języków
<textarea rows="5" name="jezyk" cols="80"></textarea>  <br>
Doświadczenie:
<textarea rows="5" name="dos" cols="80"></textarea> <p>
<p>Uwagi:
<textarea rows="5" name="uw" cols="80"></textarea></p>
ZAŁĄCZNIKI <p>
<input type="file" name="filename0"><br>
<input type="file" name="filename1"><br>
<input type="file" name="filename2"><br>
<input type="file" name="filename3"> <br>  <p>
<input type="reset" value = "Wyczyść" name="submit"><input type="submit" value = "Wyslij" name="submit">
</FORM>

_________________
Ismena
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
KCS
Wysłany:     Temat postu: Reklama w KCS







Powrót do góry
Ismena
PostWysłany: 14 Sty 2006, 12:57    Temat postu: Odpowiedz z cytatem Zacytuj zaznaczone

Nowicjusz
Nowicjusz

Dołączył: 10 Sty 2006
Posty: 7


widze ze tutaj nie mam co liczyc na pomoc n Crying or Very sad
_________________
Ismena
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Martin
PostWysłany: 14 Sty 2006, 17:53    Temat postu: Odpowiedz z cytatem Zacytuj zaznaczone

KCS_Admin
KCS_Admin

Dołączył: 17 Cze 2005
Posty: 5566

Skąd: Piaseczno

Poniżej rozwiązanie jakie ja stosuję do wysłania załącznika.

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


To jest przykład. Jak widzisz w formularzu podaje tylko pole do pobrania załącznika, jeżeli chodzi o dodatkowe pola to musisz sobie wstawić. Oprócz pola do pobrania załącznika - są 2 pola ukryte: jedno do sprawdzania czy do kolejnej strony wyslij.php są dane przekazywane z tej strony [zabezpieczenie przed bezpośrednim wejściem na stronę wyslij.php] i drugie pole do nadzorowania, czy załączony plik nie przekracza określonej przez Ciebie wielkości - w moim przypadku 2 MB.

wyslij.php
Kod:
<?php
//sprawdzenie czy załącznik pochodzi z formularza
if ($_POST["wyslij"]==1)
{
srand((double)microtime()*1000000);
$znacznik = md5(uniqid(rand()));

// dane o odbiorcy, nadawcy
$odbiorca="nazwa-twojego-maila@domena.pl";
$tytul="Mail z zalaczniekiem";
$nadawca = "Mail ze strony";
$nadawca_mail="mail-ze-strony@domena.pl";

// treść listu
$tresclistu = "tutaj piszesz całą treść maila";

// definicja nagłówków
  $naglowki  = "From: $nadawca <$nadawca_mail>\n";
  $naglowki .= "MIME-Version: 1.0\n";
  $naglowki .= "Content-Type: multipart/mixed;\n";
  $naglowki .= "\tboundary=\"___$znacznik==\"";

// nagłówki listu
  $tresc="--___$znacznik==\n";
  $tresc .="Content-Type: text/plain; charset=\"iso-8859-2\"\n";
  $tresc .="Content-Transfer-Encoding: 8bit\n";
  $tresc .="\n$tresclistu\n";

// nagłówki i obsługa załącznika
  $plik_nazwa_tmp = $_FILES["plik1"]["tmp_name"];
  $plik_nazwa_oryginalna = $_FILES["plik1"]["name"];
  $plik_wielkosc = $_FILES["plik1"]["size"];

if (is_uploaded_file($plik_nazwa_tmp))
  {
    $tresc .="--___$znacznik==\n";
    $tresc .="Content-Type: image/gif\n";
    $tresc .="Content-Disposition: attachment;\n";
    $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
    $tresc .="Content-Transfer-Encoding: base64\n\n";
    $f = fopen($plik_nazwa_tmp,"rb");
    $dane = fread($f,filesize($plik_nazwa_tmp));
    fclose($f);
    $tresc .= chunk_split(base64_encode($dane));
    $tresc .="--___$znacznik==--\n";
  }

// wysłanie listu
     if (mail($odbiorca,$tytul,$tresc,$naglowki))
   {
   print "E-mail z załącznikiem został wysłany poprawnie.";
   }
   else
   {
   print "E-mail NIE został wysłany poprawnie.
   <br>Prosimy o <a href=\"javascript:history.back();\">powrót</a> i wysłanie e-maila ponownie.";
   }
}
?>


Poczytaj też o gotowych klasach do wysyłania maili:
http://phpmailer.sourceforge.net/


_________________
Martin
- Prywatny Katalog Stron
- pizzeria La Nostra zaprasza
- e-Piaseczno i okolice, to najlepsze miejsce dla e-mieszkanca powiatu piaseczynskiego
- najlepsze prywatne przedszkole w Piasecznie
- moj prywatny fotoblog ze zdj?ciami
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Ismena
PostWysłany: 14 Sty 2006, 18:56    Temat postu: Odpowiedz z cytatem Zacytuj zaznaczone

Nowicjusz
Nowicjusz

Dołączył: 10 Sty 2006
Posty: 7


Bardzo dziekuje za odpowiedz
Z tego co rozumiem to tą część
Kod:

// nagłówki i obsługa załącznika
  $plik_nazwa_tmp = $_FILES["plik1"]["tmp_name"];
  $plik_nazwa_oryginalna = $_FILES["plik1"]["name"];
  $plik_wielkosc = $_FILES["plik1"]["size"];

if (is_uploaded_file($plik_nazwa_tmp))
  {
    $tresc .="--___$znacznik==\n";
    $tresc .="Content-Type: image/gif\n";
    $tresc .="Content-Disposition: attachment;\n";
    $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
    $tresc .="Content-Transfer-Encoding: base64\n\n";
    $f = fopen($plik_nazwa_tmp,"rb");
    $dane = fread($f,filesize($plik_nazwa_tmp));
    fclose($f);
    $tresc .= chunk_split(base64_encode($dane));
    $tresc .="--___$znacznik==--\n";
  }

Powtarzam tyle razy ile mam załączników?? Zmieniając tylko nazwe pliku.Zaraz to wyprobuje Smile
_________________
Ismena
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Ismena
PostWysłany: 14 Sty 2006, 19:17    Temat postu: Odpowiedz z cytatem Zacytuj zaznaczone

Nowicjusz
Nowicjusz

Dołączył: 10 Sty 2006
Posty: 7


super wszystko dziala Laughing
_________________
Ismena
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Martin
PostWysłany: 14 Sty 2006, 19:20    Temat postu: Odpowiedz z cytatem Zacytuj zaznaczone

KCS_Admin
KCS_Admin

Dołączył: 17 Cze 2005
Posty: 5566

Skąd: Piaseczno

Cieszę się że działa i że dostosowałeś skrypt do swoich wymagań Wink
_________________
Martin
- Prywatny Katalog Stron
- pizzeria La Nostra zaprasza
- e-Piaseczno i okolice, to najlepsze miejsce dla e-mieszkanca powiatu piaseczynskiego
- najlepsze prywatne przedszkole w Piasecznie
- moj prywatny fotoblog ze zdj?ciami
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Ismena
PostWysłany: 14 Sty 2006, 20:09    Temat postu: Odpowiedz z cytatem Zacytuj zaznaczone

Nowicjusz
Nowicjusz

Dołączył: 10 Sty 2006
Posty: 7


jeszcze mam jedno pytanie, prosbe jak zrobic by zawartosc przychodzaca na meila byla wyswietlana np w tabelii??? Probowalam
Kod:
$tresclistu = "$imie,$nazwisko,$tel";//itp
wstawic w tabelke ale wtedy wogole mi nie wysyła meila
_________________
Ismena
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Martin
PostWysłany: 14 Sty 2006, 20:26    Temat postu: Odpowiedz z cytatem Zacytuj zaznaczone

KCS_Admin
KCS_Admin

Dołączył: 17 Cze 2005
Posty: 5566

Skąd: Piaseczno

Musisz zmienić w kodzie:
Kod:
$tresc .="Content-Type: text/plain; charset=\"iso-8859-2\"\n";

na
Kod:
$tresc .="Content-Type: text/html; charset=\"iso-8859-2\"\n";


Musisz poinformować, że typ nie jest TXT text/plain tylko HTML text/html

Następnie w kodzie zamiast:
Kod:
// treść listu
$tresclistu = "tutaj piszesz całą treść maila";


piszesz np:
Kod:
// treść listu
$tresclistu = "<table width=500 border=0 cellpadding=1 cellspacing=2 align=center style=\"font-family: Verdana; font-size: 10px;\">
<tr>
<td width=100>Imię:</td>
<td width=400><b>".$imie."</b></td>
</tr>
<tr>
<td>Nazwisko:</td>
<td><b>".$nazwisko."</b></td>
</tr>
<tr>
<td>Telefon:</td>
<td><b>".$telefon."</b></td>
</tr>
</table>";


Podałem Ci przykładowy kod HTML tabeli w treści wysyłanego maila. Ty zmodyfkuj już HTML wewnątrz na swoje potrzeby.
_________________
Martin
- Prywatny Katalog Stron
- pizzeria La Nostra zaprasza
- e-Piaseczno i okolice, to najlepsze miejsce dla e-mieszkanca powiatu piaseczynskiego
- najlepsze prywatne przedszkole w Piasecznie
- moj prywatny fotoblog ze zdj?ciami
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Ismena
PostWysłany: 14 Sty 2006, 20:33    Temat postu: Odpowiedz z cytatem Zacytuj zaznaczone

Nowicjusz
Nowicjusz

Dołączył: 10 Sty 2006
Posty: 7


Kod:
$tresclistu = "<table  border="0">
  <tr>
    <td width="18%">Imie:".$imie."</td>
    <td colspan="2">Nazwisko:". $nazwisko."</td>
  </tr>
  <tr>
    <td width="18%">mail: ".$mail."</td>
    <td colspan="2">tel: ".$tel."</td>
  </tr>
  <tr>
    <td colspan="3">data urodzenia</td>
  </tr>
  <tr>
    <td width="18%">".$dd."</td>
    <td width="56%">".$mm."</td>
    <td width="26%">".$yy."</td>
  </tr></table>";
mam cos takiego i juz nie wysyla nawet nie ma informacji ze nie zostal wyslany:(
_________________
Ismena
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Martin
PostWysłany: 14 Sty 2006, 20:38    Temat postu: Odpowiedz z cytatem Zacytuj zaznaczone

KCS_Admin
KCS_Admin

Dołączył: 17 Cze 2005
Posty: 5566

Skąd: Piaseczno

Jak już masz coś takiego to pamiętaj, że w kodzie PHP pokaże ci cudzysłowy jako błąd, przerób to na taką wersję:

Kod:
$tresclistu = "<table  border=\"0\">
  <tr>
    <td width=\"18%\">Imie:".$imie."</td>
    <td colspan=\"2\">Nazwisko:".$nazwisko."</td>
  </tr>
  <tr>
    <td width=\"18%\">mail: ".$mail."</td>
    <td colspan=\"2\">tel: ".$tel."</td>
  </tr>
  <tr>
    <td colspan=\"3\">data urodzenia</td>
  </tr>
  <tr>
    <td width=\"18%\">".$dd."</td>
    <td width=\"56%\">".$mm."</td>
    <td width=\"26%\">".$yy."</td>
  </tr></table>";


Widzisz różnicę? Postać: width="18%" jest niedozwolona w PHP i dlatego ci nie wysyła, musi być tak - width=\"18%\"
To samo dotyczy innych parametrów HTML z cudzysłowami.

Pamiętaj też o zmianie kodu na:
Kod:
$tresc .="Content-Type: text/html; charset=\"iso-8859-2\"\n";

_________________
Martin
- Prywatny Katalog Stron
- pizzeria La Nostra zaprasza
- e-Piaseczno i okolice, to najlepsze miejsce dla e-mieszkanca powiatu piaseczynskiego
- najlepsze prywatne przedszkole w Piasecznie
- moj prywatny fotoblog ze zdj?ciami
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Ismena
PostWysłany: 14 Sty 2006, 20:46    Temat postu: Odpowiedz z cytatem Zacytuj zaznaczone

Nowicjusz
Nowicjusz

Dołączył: 10 Sty 2006
Posty: 7


Nio to teraz jest juz wszystko dobrze.
Jeszcze raz bardzo dziekuje za pomoc:)
_________________
Ismena
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
lothkan
PostWysłany: 22 Lip 2007, 10:12    Temat postu: Odpowiedz z cytatem Zacytuj zaznaczone

Nowicjusz
Nowicjusz

Dołączył: 22 Lip 2007
Posty: 2


Ismena napisał:
Bardzo dziekuje za odpowiedz
Z tego co rozumiem to tą część
Kod:

// nagłówki i obsługa załącznika
  $plik_nazwa_tmp = $_FILES["plik1"]["tmp_name"];
  $plik_nazwa_oryginalna = $_FILES["plik1"]["name"];
  $plik_wielkosc = $_FILES["plik1"]["size"];

if (is_uploaded_file($plik_nazwa_tmp))
  {
    $tresc .="--___$znacznik==\n";
    $tresc .="Content-Type: image/gif\n";
    $tresc .="Content-Disposition: attachment;\n";
    $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
    $tresc .="Content-Transfer-Encoding: base64\n\n";
    $f = fopen($plik_nazwa_tmp,"rb");
    $dane = fread($f,filesize($plik_nazwa_tmp));
    fclose($f);
    $tresc .= chunk_split(base64_encode($dane));
    $tresc .="--___$znacznik==--\n";
  }

Powtarzam tyle razy ile mam załączników?? Zmieniając tylko nazwe pliku.Zaraz to wyprobuje Smile


hmm a u mnie to jakoś nie działa, zmieniam z "plik1 na plik2" tak samo w formularzu jak mniemam i wysyła się tylko 1 załącznik ... co robię źle ?
Sprawdzałem wysyłając 1 załącznik i np email zajmuje wówczas 72KB a jak wyśle 2 załączniki rzekomo to dochodzi jeden załącznik (pierwszy) a drugiego nie ma i email zajmuje 140KB czyli gdzieś popełniam błąd ale nie mam pojęcia gdzie Sad ??
Będę wdzięczny za pomoc
Pozdrawiam
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
mkom6
PostWysłany: 06 Wrz 2007, 01:45    Temat postu: Odpowiedz z cytatem Zacytuj zaznaczone

Nowicjusz
Nowicjusz

Dołączył: 06 Wrz 2007
Posty: 1


Świetny skrypt. Właśnie tego szukałem, bo wysyłanie maila z załącznikiem to dla mnie nowość.
Niestety chciałęm wysyłać w mailu do 3 załączników i mam problem z modyfikacją skryptu wyslij.php n
Męczyłem się, zmieniałem skrypcik, ale jak już to przychdzoi jeden załącznik n
Pomoże ktoś

michał
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
toni
PostWysłany: 26 Paź 2007, 21:39    Temat postu: Odpowiedz z cytatem Zacytuj zaznaczone

Nowicjusz
Nowicjusz

Dołączył: 26 Paź 2007
Posty: 1


Witam - jestem poczatkujacy wiec wybaczcie moje pytanie... Ten skrypt bardzo mi sie przydal i jest w deche, co jednak zrobic z plikiem ktory on sciagnie i wysyla na maila (czy ten plik zostaje w bazie danych? czy automatycznie sie kasuje?) Dziekuwa za odp.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Martin
PostWysłany: 27 Paź 2007, 15:28    Temat postu: Odpowiedz z cytatem Zacytuj zaznaczone

KCS_Admin
KCS_Admin

Dołączył: 17 Cze 2005
Posty: 5566

Skąd: Piaseczno

toni napisał:
Ten skrypt bardzo mi sie przydal i jest w deche

Skoro skrypt ci się przydał, to nie testowałeś jak on działa?
toni napisał:
co jednak zrobic z plikiem ktory on sciagnie i wysyla na maila (czy ten plik zostaje w bazie danych? czy automatycznie sie kasuje?

1. W tym skrypcie wskazujesz plik jaki znajduje się u ciebie na dysku.
2. Plik wysyłany jest na wskazany mail.
3. Plik nie jest zapisywany w bazie danych.
4. Skrypt nie kasuje pliku.
_________________
Martin
- Prywatny Katalog Stron
- pizzeria La Nostra zaprasza
- e-Piaseczno i okolice, to najlepsze miejsce dla e-mieszkanca powiatu piaseczynskiego
- najlepsze prywatne przedszkole w Piasecznie
- moj prywatny fotoblog ze zdj?ciami
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Wyświetl posty z ostatnich:   
Napisz nowy temat  Odpowiedz do tematu Idź do strony 1, 2  Następny Strona 1 z 2


Forum Katalogu Ciekawych Stron Strona Główna » PHP / MySQL oraz inne bazy danych » formularz z 4 załącznikami
Skocz do:  



Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


katalog stron | forum
Powered by phpBB © 2005 phpBB Group