Autor Zpráva
tukan
Profil *
Ahoj, mám problém s odesíláním mailu pres formulář.. Jde o to že už mi emaily chodí dokonce i kódování funguje ale problém je že se email odešle vždy při načtení stránky a ne při kliknutí na tlačítko odeslat... Mám tam kontrolu jestli se mail odeslal a právě při příchodu na stránku tam už svítí Odesláno... Nevíte co stím? Díky

Můj kód:

                         <form method="post" class="obsah" action="?">
                          				    <div class="bg-pole-middle">
            <input type="text" value="Jméno..." onfocus="if(this.value==this.defaultValue){this.value=''}"
            onblur="if(this.value==''){this.value=this.defaultValue}" name="jmeno" class="pole-middle"></div>
            
                                      				    <div class="bg-pole-middle">
            <input type="text" value="E-mail..." onfocus="if(this.value==this.defaultValue){this.value=''}"
            onblur="if(this.value==''){this.value=this.defaultValue}" name="email" class="pole-middle"></div>
            
                                                  				    <div class="bg-pole-middle">
            <input type="text" value="Předmět..." onfocus="if(this.value==this.defaultValue){this.value=''}"
            onblur="if(this.value==''){this.value=this.defaultValue}" name="predmet" class="pole-middle"></div>
                 
                 <div class="bg-pole-zprava">
            <textarea onfocus="if(this.value==this.defaultValue){this.value=''}"
            onblur="if(this.value==''){this.value=this.defaultValue}" name="zprava" class="pole-zprava">Vaše zpráva...
            </textarea></div>
            
            <input type="submit" class="postsubmit" value=" ">
  </form>                              
  
   <?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));
          $stav = mail ($to, $predmet, $zprava, $head);
          return $stav ?  TRUE : FALSE;  }
/* ********************************************************************** **  */

$jmeno = $_POST['jmeno'];
$mail = $_POST['email'];
$predmet = $_POST['predmet'];
$zprava = $_POST['zprava'];


if (cs_mail("marek@email.cz", $predmet ." Od: " . $jmeno, $zprava, "From: " . $mail . "\n"))
  echo "Dobre";
 else
  echo "Spatne";
?>
panther
Profil
tukan:
nikde tam nemáš podmínku, zda byl formulář odeslán. Tedy if (isset($_POST['zprava'])) například.
johnl
Profil
Odesílacímu inputu přidej name..

<input type="submit" class="postsubmit" value=" " name="odeslat">

<?php
if(isset($_POST["odeslat"])){
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));
          $stav = mail ($to, $predmet, $zprava, $head);
          return $stav ?  TRUE : FALSE;  }
/* ********************************************************************** **  */

$jmeno = $_POST['jmeno'];
$mail = $_POST['email'];
$predmet = $_POST['predmet'];
$zprava = $_POST['zprava'];


if (cs_mail("marek@email.cz", $predmet ." Od: " . $jmeno, $zprava, "From: " . $mail . "\n"))
  echo "Dobre";
 else
  echo "Spatne";
}
?>

Zkrátka to stačí obalit podmínkou if(isset($_POST["odeslat"])) tedy pokud bylo kliknuto na tlačítko odeslat.. ;-)
Radek Cvek
Profil
Nikde tam nevidím kontrolu odeslání - mělo by tam být něco jako:

if (isset($_POST["email"]))
  {
  if (cs_mail("marek@email.cz", $predmet ." Od: " . $jmeno, $zprava, "From: " . $mail . "\n"))
    echo "Dobre";
  else
    echo "Spatne";
  }
tukan
Profil *
Díky moc všem už mi to funguje jak má.
freshynek
Profil *
ahoj Tucane,
nemohl bys sem šupnou i tvůj html kód? Taky s tím bojuju a zatím mi to nefunguje.
Díky moc H.

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: