Autor | Zpráva | ||
---|---|---|---|
Anonymní Profil * |
#1 · Zasláno: 19. 5. 2010, 12:36:08
Zdravim všechny potenciální pomocníky. Mam tenhle kód na formulář :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>mail form</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <?php $prijemce = "info@mojedomena.cz"; $predmet = $_POST['predmet']; $hlavicka .= "Content-Type: text/html; charset=\"utf-8\"\n"; $hlavicka = "From: " . $email . "\r\n"; $zprava = "Jméno: {$_POST['jmeno']}\r\n"; $zprava .= "E-mail: {$_POST['email']}\r\n"; $zprava .= "Telefon: {$_POST['phone']}\r\n"; $zprava .= "Text: {$_POST['text']}\r\n"; if (!empty($prijemce) and !empty($predmet) and !empty($hlavicka) and !empty($zprava)){ mail($prijemce, $predmet, $zprava, $hlavicka); echo "<h3>E-mail byl úspěšně odeslán. Děkujeme za Vaši zprávu.</h3><br /> <p>Tato stránka bude automaticky přesměrována do 3 s.<br> Pokud se tak nestane, pokračujte <a href='http://www.mojedomena.cz'>zde</a><br><br></p>"; echo "<script type=\"text/javascript\"> setTimeout(\"self.location.replace('http://www.mojedomena.cz')\", 3*1000) </script>"; } else { echo "E-mail se bohužel nepodařilo odeslat.<br>"; } ?> </html> V html stránce to vypadá takhle (je kódovaná v utf-8) <form id="contacts-form" action="mailform.php" method="post"> <fieldset> <div class="field"><label>Vaše jméno:</label><input type="text" name="jmeno"/></div> <div class="field"><label>Váš e-mail:</label><input type="text" name="email"/></div> <div class="field"><label>Váš telefon:</label><input type="text" name="phone"/></div> <div class="field"><label>Předmět:</label><input type="text" name="predmet"/></div> <div class="field"><label>Váš dotaz:</label><textarea name="text" cols="1" rows="1"></textarea></div> <div class="wrapper"><a class="link1" onclick="document.getElementById('contacts-form').submit()"><em><b>Send Your Message!<span>Send Your Message!</span></b></em></a></div> Už jsem vyzkoušel vše ze sekce FAQ o kódování,ale ať zkoušim co zkoušim,tak mi předmět i zpráva pořád chodí s klikyhákama. A navíc místo názvu e-mailu v došlé zprávě se mi ukazuje neplatná adresa. Zkuste napsat,kde jsem to pls zvoral. Předem díky |
||
pablo massaki Profil |
#2 · Zasláno: 19. 5. 2010, 12:37:11
sorry posílal jsem to já ale nějak jsem se stihl odhlásit než jsem to poslal,sorry.
|
||
Alphard Profil |
#3 · Zasláno: 19. 5. 2010, 13:40:07
pablo massaki:
Ukažte tu verzi, kde je funkce cs_mail() z FAQ, možná jste ji špatně použil. |
||
pablo massaki Profil |
#4 · Zasláno: 19. 5. 2010, 14:05:59
tak to vypadá takto:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>mail form</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <?php /* *************** diskuse.jakpsatweb.cz *** PHP FAQ ********************** */ function autoUTF($s) { // detect UTF-8 if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) return $s; // detect WINDOWS-1250 if (preg_match('#[\x7F-\x9F\xBC]#', $s)) return iconv('WINDOWS-1250', 'UTF-8', $s); // assume ISO-8859-2 return iconv('ISO-8859-2', 'UTF-8', $s); } function cs_mail ($to, $predmet, $zprava, $head = "") { $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?="; $head .= "MIME-Version: 1.0\n"; $head .= "Content-Type: text/plain; charset=\"utf-8\"\n"; $head .= "Content-Transfer-Encoding: base64\n"; $zprava = base64_encode (autoUTF ($zprava)); return mail ($to, $predmet, $zprava, $head); } /* ********************************************************************** ** */ $mail = "info@mojedomena.cz"; $predmet = $_POST['predmet'];; $zprava = "Jméno: {$_POST['jmeno']}\r\n"; $zprava .= "E-mail: {$_POST['email']}\r\n"; $zprava .= "Telefon: {$_POST['phone']}\r\n"; $zprava .= "Text: {$_POST['text']}\r\n"; $kon = cs_mail ($mail, $predmet, $zprava, "From: vas@web.cz\n"); if ($kon) { echo "<h3>E-mail byl úspěšně odeslán. Děkujeme za Vaši zprávu.</h3><br /> <p>Tato stránka bude automaticky přesměrována do 3 s.<br> Pokud se tak nestane, pokračujte <a href='http://www.mojedomena.cz'>zde</a><br><br></p>"; echo "<script type=\"text/javascript\"> setTimeout(\"self.location.replace('http://www.mojedomena.cz')\", 3*1000) </script>"; } else { echo "E-mail se bohužel nepodařilo odeslat.<br>"; } ?> </html> a abych se přiznal,tak možná z důvodu toho abych sem neposlal nějakou trapnou chybu,tak mi teď po 10 dnech neustálýho trápení přišel na mail první správně zobrazený formulář. ale v kolonce Od:je to vas@web.cz..jak to nahradit e-mailem zadaným klientem do formuláře? Něco jako tohle? :: $kon = cs_mail ($mail, $predmet, $zprava, "From: {$_POST['email']}\n"); může to být takhle? |
||
Alphard Profil |
#5 · Zasláno: 19. 5. 2010, 14:19:22
pablo massaki:
„může to být takhle?“ Nevidím v tom problém, ale radši to zkuste. Tento přístup (vez validace emailové adresy) teda umožňuje zneužít váš hosting a pomocí hlaviček pro kopie rozesílat maily na všechny strany, ale ještě jsem se s tímhle zneužitím nesetkal. |
||
pablo massaki Profil |
#6 · Zasláno: 19. 5. 2010, 15:08:28
jj,tak to funguje.vsadim se,že kdybych to neposílal sem,tak to tak nekontroluju a určitě bych tam nějakou chybu měl.ještě jednou díky.
|
||
Časová prodleva: 14 let
|
0