Autor Zpráva
Pavel817
Profil *
Mám formulář který jenom graficky upravím podle potřeby, změním případně e-mailovou adresu příjemce a formulář bezproblému funguje. Teď je ale najednou všechno jinak a nemůžu to zprovoznit. Byl bych rád pokud by se našel někdo kdo mi poradí v čem je chyba. Už je to dost značně "překopaný" ale odeslaná data nikdy nedojdou :(
Tady je zdrojový kod formuláře:
<?php
function my_mail($to,$subject,$message,$headers){
if(mail($to,$subject,$message,$headers)){
 return true;
}else{
 if(imap_mail($to,$subject,$message,$headers)){
  return true;
 }else{
  return false;
 }
}
}

if($_GET["dotaz"]){
 $send_to = "panlad@seznam.cz";
 $hlavicka = "E-mail z webu";
 $headers = "From: FORMULAR <panlad@seznam.cz>";
 $_GET["dotaz"] = stripcslashes($_GET["dotaz"]);
 $text = '
firma: $_GET["firma"];
jmeno: $_GET["jmeno"];
adresa: $_GET["adresa"];
telefon: $_GET["telefon"];
email: $_GET["email"];
zprava z webu >>
$_GET[dotaz];
firma: $_GET["firma"];
jmeno: $_GET["jmeno"];
adresa: $_GET["adresa"];
telefon: $_GET["telefon"];
email: $_GET["email"];
';
 if(my_mail($send_to,$hlavicka,$headers,$text)){
?>
<div class="message">
 Zpráva byla úspěšně odeslaná
</div> 
<?php
 }else{
 ?>
<div class="message">
 Zpráva nebyla úspěšně odeslaná
</div> 
<?php
 
}
}

?>

<form method="POST" action="kontakt-dik.php">
          <table border="0" width="*" cellspacing="0" cellpadding="5">
            <tr> 
              <td valign="top" width="230"> Váš dotaz nebo požadavek... 
              </td>
              <td width="350" valign="top" align="right"> <p>
                  <textarea rows="5" name="dotaz" cols="40"></textarea>
                </p></td>
            </tr>
            <tr> 
              <td width="230"> <p>Vaše jméno &nbsp;</p></td>
              <td width="350" align="right"> <p>
                  <input type="text" name="jmeno" size="40">
                </p></td>
            </tr>
            <tr> 
              <td width="230"> <p>Telefonní kontakt na Vás&nbsp;</p></td>
              <td width="350" align="right"> <p>
                  <input type="text" name="telefon" size="40">
                </p></td>
            </tr>

            <tr> 
              <td width="230"> <p>Váš E-mail &nbsp;</p></td>
              <td width="350" align="right"><p><input type="text" name="email" size="40"></p>
              </td>
            </tr>


            <tr> <td></td>
              <td align="left"><br>
                  <input class="tlacitko" type="reset" value="Vymazat údaje" name="B1">
                  &nbsp;
                  <input class="tlacitko" type="submit" value="Odeslat" name="B2">
                </td>
            </tr>
          </table>
      </form>
</div><!-- napiste-nam -->

A toto je stránka po odeslání formuláře.

<?php
function my_mail($to,$subject,$message,$headers){
if(mail($to,$subject,$message,$headers)){
 return true;
}else{
 if(imap_mail($to,$subject,$message,$headers)){
  return true;
 }else{
  return false;
 }
}
}

if($_GET["dotaz"]){
 $send_to = "panlad@seznam.cz";
 $hlavicka = "E-mail z webu";
 $headers = "From: FORMULAR <panlad@seznam.cz>";
 $_GET["dotaz"] = stripcslashes($_GET["dotaz"]);
 $text = '
zprava z webu :

$_GET["dotaz"];

firma: $_GET["firma"];
jmeno: $_GET["jmeno"];
adresa: $_GET["adresa"];
telefon: $_GET["telefon"];
email: $_GET["email"];
';
 if(my_mail($send_to,$hlavicka,$headers,$text)){
?>
<div class="message">
<h2>Zpráva byla v pořádku odeslána.</h2>
<p>Děkujeme za Váš zájem o naše služby. Za chvíli budete přesměrováni na úvodní stránku.</p>
</div> <!-- message -->

<?php
 }else{
 ?>
<div class="message">
<h2>Zpráva nebyla úspěšně odeslaná</h2>
<p>Zkuste odeslat zprávu znovu. Děkujeme.</p>
</div> <!-- message -->

<?php
 
}
}
?>

</div><!-- main -->
Joker
Profil
Pavel817:
Proč je ten odesílací skript duplikovaný na obou dvou, navíc u každé trošku jinak?
Ten první má …zvláštní… způsob řešení chybové situace: Pokud se mail odešle, napíše, že se úspěšně odeslal. A pokud nastane chyba, taky napíše, že se úspěšně odeslal.

Který z nich se použije? Funkce mail vrátí co? Jsou tam nějaké chybové hlášky?
Pavel817
Profil *
Rád bych odpověděl na všechny otázky ale vůbec PHP neumím. Mám jen formulář který podle potřeby pouze naformátuju. Zatím to pokaždé fungovalo až teď to najednou nechodí. Je mi jasné, že tam je asi dost chyb ale i s těmito chybami to šlo. Teď už to bohužel nechodí vůbec :( Asi bych potřeboval někoho kdo by mi to upravil.
Davex
Profil
Problém je v tom, že data z formuláře odesíláš <form method="POST" a ve skriptu čteš nějaké údaje z pole $_GET, které je logicky úplně prázdné. Poskládání těla e-mailu je taky špatně, protože v jednoduchých uvozovkách se proměnné nenahrazují hodnotami.

Zkus se inspirovat v PHP FAQ Kódování e-mailu, aneb abychom neposílali otazníky a Odeslání více položek.

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: