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