PHP电子邮件发送问题与经过验证的字段

穆罕默德一世

我遇到了一个问题,我已经成功验证了表单中的输入和必填字段。但是,如果用户提交表单,则无论字段是否为空;它显示带有字段的错误消息,但也发送空电子邮件。

我相信只有一个简单的调整需要完成。但是我迷路了。请查看下面的代码,我有:

<?php
$nameErr = $snameErr = $emailErr = $ownerNameErr = $ownerNatErr = $genderErr = $websiteErr = "";
$name = $sname = $regAddress = $email = $gender = $comment = $ownerName = $ownerNat = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
   if (empty($_POST["name"]))
     {$nameErr = "Name is required";}
   else
     {
     $name = test_input($_POST["name"]);
     // check if name only contains letters and whitespace
     if (!preg_match("/^[a-zA-Z ]*$/",$name))
       {
       $nameErr = "Only letters and white space allowed"; 
       }
     }

if (empty($_POST["sname"]))
     {$snameErr = "Company Second Name is required";}
   else
     {
     $sname = test_input($_POST["sname"]);
     // check if name only contains letters and whitespace
     if (!preg_match("/^[a-zA-Z ]*$/",$sname))
       {
       $snameErr = "Only letters and white space allowed"; 
       }
     }

          extract($_POST);

     $to="[email protected]";
    $subject="Subject";
$body="<table width='100%' cellspacing='10' cellpadding='0'>
    <tr>
            <td style='color:blue;font-weight:bold;margin-left:500px;font-size:20px;' colspan='3'>My Form</td>
    </tr>

  <tr>
    <td>Name</td>
    <td>:</td>
    <td>$name</td>
  </tr>

<tr>
    <td>Second Choice</td>
    <td>:</td>
    <td>$sname</td>
  </tr>

</table>";
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: MySite '."\r\n";
/*$headers .= 'Reply-To:'."$textfield5"."\r\n";*/



if(mail($to,$subject,$body,$headers))
{


       $msg = "Thank you for contacting us. We will get back to you soon.";
    /*$msg= "Successfully Sent";*/
}
else
{
    $msg= "msg not sent";
}

}

function test_input($data)
{
     $data = trim($data);
     $data = stripslashes($data);
     $data = htmlspecialchars($data);
     return $data;
}
?>

HTML部分

<span class="error">* <?php echo $ownerNatErr;?></span>
   <br><br>

   E-mail: <input type="text" name="email" value="<?php echo $email;?>">
   <span class="error">* <?php echo $emailErr;?></span>

   input type="submit" name="submit" value="Submit Information">

如有任何帮助/建议,我们将不胜感激。

问候。

只是

您检查错误参数并设置一些错误消息,但是mail即使发现错误,代码仍会调用

您可能要添加一些条件:

if($snameErr === '' && $nameErr === '' ...) {
  // call mail here, check whether it was successful and
  // tell the user about it
} else {
  // show error message or something else
}

顺便说一句,我猜您的代码容易受到攻击,因为您使用extract($_POST)攻击者可能会注入任意变量,因此可以绕过您的检查。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

即使经过验证,AWS SES 电子邮件也始终发送至垃圾邮件

来自分类Dev

PHP验证表单,带有发送HTML模板问题的电子邮件

来自分类Dev

Swift Firebase:发送电子邮件后如何检查用户是否经过验证?

来自分类Dev

即使验证错误,PHP也会发送电子邮件

来自分类Dev

用PHP发送电子邮件中的标题问题

来自分类Dev

电子邮件验证php

来自分类Dev

jQuery验证电子邮件验证问题

来自分类Dev

从php邮件发送重复的电子邮件

来自分类Dev

来自LinkedIn API的经过验证的电子邮件?

来自分类Dev

在Android中不经过身份验证的电子邮件

来自分类Dev

OpenERP电子邮件发送问题

来自分类Dev

流星电子邮件发送问题

来自分类Dev

CodeIgniter电子邮件发送问题

来自分类Dev

Firebase 功能电子邮件发送问题

来自分类Dev

Django 电子邮件验证问题

来自分类Dev

联系表格电子邮件字段问题

来自分类Dev

使用PHP发送邮件时,删除未验证的Gmail警告电子邮件

来自分类Dev

用PHP发送电子邮件

来自分类Dev

使用php发送电子邮件

来自分类Dev

电子邮件未使用php发送

来自分类Dev

PHP-发送每日电子邮件

来自分类Dev

电子邮件发送表格php / html

来自分类Dev

通过PHP发送电子邮件

来自分类Dev

未发送PHP电子邮件模板

来自分类Dev

无法从PHP发送电子邮件

来自分类Dev

用PHP发送HTML电子邮件

来自分类Dev

PHP电子邮件发送失败

来自分类Dev

PHP表单发送空白电子邮件

来自分类Dev

PHP-发送每日电子邮件