PHP email form


0

Здравейте. Искам да ви попитам ето тази формичка, защо не иска дами покаже съобщението за грешка при празни полета за име и тем подобни и защо не иска да се прати на конкретен email. Ето го и кода:

 

                            <?php

if(isset($_POST['sendmail']))
{
  $strName = $_POST['strName'];
  $strEmail = $_POST['strEmail'];
  $strMsg = $_POST['strMsg'];
  $strFamily=$_POST['strFamily'];

  if($strName === "")
  {
    echo "Трябва да попълните името!";
  }

  elseif($strEmail === "")
  {
    echo "Трябва да попълните e-maila";
  }

  elseif($strMsg === "")
  {
    echo "Не сте написали съобщение";
  }
  elseif($strFamily==="")
    {
        echo "Не сте въвели Фамилия";
    }

  else
  {
    $strMsg2 = "$strName  сте изпратил следното съобщение:\n\n$strMsg\n\nЗа контакти: $strEmail";
    if(mail("tankataevelik@abv.bg", $strMsg2, "From: $strEmail\r\n Reply-to: $strEmail\r\n"))
    {
      echo "Съобщението е изпратено успешно!";
    }
    else
    {
        echo "Съобщението не е изпратено!";
    }
  }
}

?>
                                <form method="post" action="http://abv.bg">
                                            Име: <input type="text" name="strName" class="elements" value="" /><br />
                                            Фамилия: <input type="text" name="strFamily" class="elements" value="" /><br />
                                            E-mail: <input type="text" name="strEmail" class="elements" value=""/><br />
                                            Съобщение: <textarea name="strMsg" cols="50" rows="6"class="elements" value=""></textarea><br />    
                                            <input type="submit" name="sendmail" value="Изпрати" class="cursor"/><br />
                                </form>



Отговори



0

Започни ред по-ред да си правиш дебъг на кода и смятам, че ще си откриеш грешката.

Просто така, както е даден е доста трудно да се намери грешката.

Ето няколко съвета :
Изкарваш ги извън if проверката
$strName = null;
$strEmail = null;
$strMsg = null;
$strFamily=null;


После :
<input type="text" name="strName" class="elements" value="<?php echo $strName;?>" />

И го правиш за останалите.

 




0
Ето кода с малки модификации:

$strName = ""; $strEmail = ""; $strMsg = ""; $strFamily = "";
$strName_str = ""; $strEmail_str = ""; $strMsg_str = ""; $strFamily_str = "";
if(isset($_POST['sendmail'])) { $strName = $_POST['strName']; $strEmail = $_POST['strEmail']; $strMsg = $_POST['strMsg']; $strFamily=$_POST['strFamily'];
if($strName == "") { $strName_str = "Трябва да попълните името!"; }
if($strEmail == "") { $strEmail_str = "Трябва да попълните e-maila"; }
if($strMsg == "") { $strMsg_str = "Не сте написали съобщение"; }
if($strFamily =="") { $strFamily_str = "Не сте въвели Фамилия"; }
if(($strName != "") && ($strFamily !="") && ($strEmail != "") && ($strMsg != "")) { $strMsg2 = "$strName сте изпратил следното съобщение:\n\n$strMsg\n\nЗа контакти: $strEmail"; if(mail("tankataevelik@abv.bg", $strMsg2, "From: $strEmail\r\n Reply-to: $strEmail\r\n")) { echo "Съобщението е изпратено успешно!"; } else { echo "Съобщението не е изпратено!"; } } }
?>
Име:
Фамилия:
E-mail:
Съобщение:


от dam_dam (578 точки)


0
ifelse конструкцията спира работа при първата истина, тоест работи като switch със break дори и в останалите случаи да има true.
Другото, празните постове POST не са стринг, а NULL.
За да оправиш проблема ползвай "==, вместо "==="" или:
var myVar = (string)$_POST[mail];