Autor Zpráva
Anonymní
Profil *
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
sorry posílal jsem to já ale nějak jsem se stihl odhlásit než jsem to poslal,sorry.
Alphard
Profil
pablo massaki:
Ukažte tu verzi, kde je funkce cs_mail() z FAQ, možná jste ji špatně použil.
pablo massaki
Profil
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
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0