| 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: 16 let
|
|||
0