Autor | Zpráva | ||
---|---|---|---|
Darell Profil * |
Prosím o radu na co bych se měl zaměřit. Vytvořil jsem formulář (1.) s možností připojení souboru (chtěl bych jpeg, ale zatím to zkouším s txt, ale to není teď důležité), ktery je obsluhován scriptem (2.) formular.php . Textova cast přijde v pořádku na e-mail, ale příloha se zobrazí, pod nazvem "attachment" s nulovou velikostí souboru a bez přípony (vlastně i pokud přílohu nevyberu). A ještě se mě tam objeví další příloha "část 1.2.txt" opět s textovým obsahem formuláře...což mě tak netrápí. Vytvořil jsem na webserveru adresář temp, s právy 777 ..., ale zrejme se tam nic nezapisuje, nějak na to nemůžu přijít, kde je chyba. No tedy vím, že je mezi klávesnici a židlí. Vím že se to tady řešilo, ale odpověď, konkrétně na tohle jsem zde nenašel
(1.) formular <form action="formular.php" method="post" ENCTYPE="multipart/form-data" style="font-size: 12px; line-height: 18px; font-weight: bold; font-family: Arial; position: relative; width: 405px; height: 350px; top: 0px; float: left margin-left: 0px; margin-right: 0px; margin-top: 15px; margin-bottom: 0px"> <input type="radio" name="puntik" value="Diplomatický pas" style="margin-right: 5px"> Diplomatický pas<br> <input type="radio" name="puntik" value="Cestovní pas" style="margin-right: 8px" checked>Cestovní pas <br> <BR> Jméno: <input type=text size=16 name="jmeno" value="" style="margin-left: 68px; margin-right: 0px; margin-top: 0px; margin-bottom: 0px"> <br> Příjmení: <input type=text size=16 name="prijmeni" value="" style="margin-left: 60px; margin-right: 0px; margin-top: 0px; margin-bottom: 0px"> <br> Datum Narození: <input type=text size=16 name="dnarozeni" value="" style="margin-left: 17px; margin-right: 0px; margin-top: 0px; margin-bottom: 0px"> <br> Místo narození: <input type=text size=16 name="mnarozeni" value="" style="margin-left: 24px; margin-right: 0px; margin-top: 0px; margin-bottom: 0px"> <br> <BR> Fotografia: <input type=file name="fotka" value="" style="margin-left: 51px; margin-right: 0px; margin-top: 0px; margin-bottom: 0px" > <br> <BR> Doplňující údaje: <textarea rows="4" cols="15" name="dlouhytext" value="" style="margin-left: 20px; margin-right: 0px; margin-top: 0px; margin-bottom: 0px"> </textarea><br> <BR><BR> <input type="reset" value="vymazat" style="margin-left: 115px; margin-right: 0px; margin-top: 0px; margin-bottom: 0px" > <input type=submit value=odeslat style="margin-left: 52px; margin-right: 0px; margin-top: 0px; margin-bottom: 0px"> </form> (2.) script <? $jmeno =" jmeno ".$_POST['jmeno']." \r\nprijmeni ".$_POST['prijmeni']." \r\ndnarozeni ".$_POST['dnarozeni']." \r\nmnarozeni ".$_POST['mnarozeni']." \r\nfotka ".$_POST['fotka']." \r\ndlouhytext ".$_POST['dlouhytext']. " \r\npuntik ".$_POST['puntik']; if ($akce == "odeslat") { /* Bylo stisknuto tlacitko Odeslat */ $nazevsouboru = $fotka_name; if ($fotka_type == "text/plain" or $fotka_type="text/html") { if (copy ($fotka, "temp/$nazevsouboru")) { print "</table><center><span id=text>File $nazevsouboru with length $soubor_size b was validated succesfully. "; } else { print "<span id=text>There was an error. Try it again! "; } } else { print "<span id=text>This is not MIME type file. "; } if ($fotka_name == "") { /* nebyla vybrana priloha, posleme e-mail obycejne */ if ( Mail("pas@zemeslezska.eu", $jmeno ) ) echo "Formulář byl odeslán"; else echo "Formulář se nepodařilo odeslat"; } } else { /* priloha byla vybrana */ /* nejprve sestrojime hlavicky */ $envelope["from"] = "pas@zemeslezska.eu"; $envelope["to"] = "pas@zemeslezska.eu"; /* nyni sestrojime nekolik casti dopisu */ /* 1. cast - uvodni, tou rekneme, ze dopis ma vice casti s ruznymi typy dat */ $part1["type"] = TYPEMULTIPART; $part1["subtype"] = "mixed"; /* 2. cast - do dopisu pripojime prilohu */ /* nejprve zadany soubor nacteme */ $f = fopen ("temp/$fotka_name", "r"); /* otevren pro cteni */ $obsah = fread ($f, filesize("temp/$fotka_name")); /* nacteme obsah do promenne */ fclose ($f); //v octet-stream je parametr pro name $part2["type"] = TYPEAPPLICATION; $part2["encoding"] = ENCBINARY; $part2["subtype"] = "octet-stream; name=\"" . BaseName($fotka_name) . "\""; $part2["description"] = $fotka_name; $part2["contents.data"] = "$obsah"; /* 3. cast - do dopisu vlozime zadany text */ $part3["type"] = TYPETEXT; $part3["subtype"] = "plain"; $part3["description"] = "text"; $part3["contents.data"] = $jmeno; /* Cely dopis ulozime do pole body */ $body[1] = $part1; $body[2] = $part2; $body[3] = $part3; /* celou zpravu vytvorime a ulozime do promenne $zprava: */ $zprava = imap_mail_compose ($envelope, $body); /* drive nez posleme zpravu funkci Mail musime rozdelit zvlast hlavicku a zvlast telo: */ $pom = StrPos($zprava, "\r\n\r\n"); $hlavicka = SubStr($zprava, 0, $pom+2); $telo = SubStr($zprava, $pom, StrLen($zprava) - $pom); if (mail ("pas@zemeslezska.eu", 'Zpráva z webu', $telo, $hlavicka)) { print "<h4>E-mail byl úspěšně odeslán!</h4>"; } else { print "<h4>E-mail se nepodařilo odeslat!</h4>"; } } ?> |
||
AM_ Profil |
#2 · Zasláno: 11. 6. 2009, 16:34:28
Zkus použít nějakou hotovou třídu pro práci s maily, např. phpmailer (nejsem si 100% jistý, že podporuje přílohy, pokud ne, tak jinou), funkce mail() je taková dost neohrabaná.
|
||
Darell Profil * |
#3 · Zasláno: 11. 6. 2009, 23:25:34
Asi to zkusím s tím phpmailerem, když ho většina doporučuje. ..Díky
|
||
fopen Profil * |
#4 · Zasláno: 12. 6. 2009, 10:33:48
celkom sa osvedcil phpmailer
ale aj tak je lepsie kotrolovat upload if(@is_uploaded_file($_FILES['fotka']['tmp_name'])){ $mail->AddAttachment($_FILES['fotka']['tmp_name'], $_FILES['attachment']['name']); } else { echo'Error: '.$_FILES['fotka']['error']; } a v tvojom skripte nevidim sparcovanie premennej $_FILES , mozno tam je chyba... formularovy prvok typu "file" nepotrebuje parameter value toto uplne postacuje <input type="file" name="fotka"> |
||
AM_ Profil |
#5 · Zasláno: 12. 6. 2009, 10:52:39
fopen
na řádku 2 má být zřejmě 'fotka' místo 'attachment', ne? |
||
fopen Profil * |
#6 · Zasláno: 12. 6. 2009, 23:01:56
AM_
no jasne, sory za preklep... |
||
Časová prodleva: 15 let
|
0