Php 同一页面上的多个表单,为每个表单发送唯一的HTML电子邮件和成功/错误消息

Php 同一页面上的多个表单,为每个表单发送唯一的HTML电子邮件和成功/错误消息,php,html,forms,validation,html-email,Php,Html,Forms,Validation,Html Email,我一直在研究如何验证同一页面上发布到self的两个表单。每个表单都应根据与每个表单相关的输入值返回错误消息的成功与否。换句话说,如果用户在电子邮件表单上发布成功或错误消息,则在提交后应在该表单上附加成功或错误消息,而不影响呼叫表单,反之亦然。我已经能够成功地验证和发送HTML电子邮件,但是成功和错误消息不会显示在客户端。这可能是一个小的修复,例如代码或定位中的错误。我真的需要你们PHP专家的帮助和清晰的解释,谢谢 以下是HTML,每个表单和相关输入具有唯一标识符。使用简单的PHP验证,并将数据发

我一直在研究如何验证同一页面上发布到self的两个表单。每个表单都应根据与每个表单相关的输入值返回错误消息的成功与否。换句话说,如果用户在电子邮件表单上发布成功或错误消息,则在提交后应在该表单上附加成功或错误消息,而不影响呼叫表单,反之亦然。我已经能够成功地验证和发送HTML电子邮件,但是成功和错误消息不会显示在客户端。这可能是一个小的修复,例如代码或定位中的错误。我真的需要你们PHP专家的帮助和清晰的解释,谢谢

以下是HTML,每个表单和相关输入具有唯一标识符。使用简单的PHP验证,并将数据发送到电子邮件

 <?php 
    $name1 = htmlspecialchars($_POST['name1']);
    $email = htmlspecialchars($_POST['email']); 

    if(isset($_POST['email-submit']) { 
        if($name1 != "") { 
            $name1 = filter_var($name1, FILTER_SANITIZE_STRING);
            if($name1 == "") { 
                $errors1 = "Please enter your name";
            } 
        else { 
            $errors1 = "provide a name";
        }       
        if($email != "") { 
            $email = filter_var($email, FILTER_SANITIZE_EMAIL);
            if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
                $errors1 = "Please enter a valid email";
            }
        } else { 
            $errors1 = "Please enter a email";
        }
        if(!errors1) {
          $to = "First Name <name@example.com>";
          $subject = "Email Form Submission"; 
          $headers = "From: " . $to . "\r\n\";
          $headers. = "Reply-To: " . $email . "\r\n\";
          $headers .= "MIME-Version: 1.0\r\n";
          $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
          $message = "<html><body>";
          $message .= "<p>You've recieved a new message from {$name1}!</p>";
          $message .= "<p>please email {$name1} at {$email} ASAP!</p>";
          $message .= "</body></html>";

          mail($to, $subject, $message, $headers);
          echo $success1 = "<span class='success'>Thank you for your submission</span>";
        } else { 
            echo $errors1 = "<span class='errors'></span>";
        }   
    }
?>  
<form name='email-form' method='post' action='<?php echo htmlspecialchars($_SERVER[PHP_SELF]);?>'>
    <input type='text' name='name1' id='name1' value='<?php echo htmlspecialchars($_POST['name1']);?>'>
    <input type='email' name='email' id='email' value='<?php echo htmlspecialchars($_POST['email']);?>'>
    <div><?php echo $errors1;?></div> 
    <div><?php echo $success1;?></div> 
    <input type='submit' name='email-submit' id='email-submit'>
</form> 
<?php 
    $name2 = htmlspecialchars($_POST['name2']);
    $tel = htmlspecialchars($_POST['tel']); 

    if(isset($_POST['email-submit']) { 
        if($name2 != "") { 
            $name2 = filter_var($name2, FILTER_SANITIZE_STRING);
            if($name2 == "") { 
                $errors2 = "Please enter your name";
            } 
        else { 
            $errors2 = "provide a name";
        }    
        if($tel != "") { 
            $errors2 = "please provide a valid phone number";
        } else { 
            $errors2 = "please provide a phone number";
        } 
        if(!errors2) {
          $to = "firstName lastName <name@example.com>";
          $subject = "Email Form Submission"; 
          $headers = "From: " . $to . "\r\n\";
          $headers .= "Reply-To: " . $email . "\r\n\";
          $headers .= "MIME-Version: 1.0\r\n";
          $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
          $message = "<html><body>";
          $message .= "<p>You've recieved a new message from {$name2}!</p>";
          $message .= "<p>please call {$name2} at {$tel} ASAP!</p>";
          $message .= "</body></html>";

          mail($to, $subject, $message, $headers);
          echo $success2 = "<span class='success'>Thank you for your submission</span>";
        } else { 
            echo $error2 = "<span class='errors'></span>";
        }  
    }
?>
<form name='call-form' method='post' action='<?php echo htmlspecialchars($_SERVER[PHP_SELF]);?>'>
    <input type='text' name='name2' id='name2' value='<?php echo htmlspecialchars($_POST['name2']);?>'>
    <input type='tel' name='tel' id='tel' value='<?php echo htmlspecialchars($_POST['tel']);?>'>
    <div><?php echo $errors2; ?></div>
    <div><?php echo $success2;?></div> 
    <input type='submit' name='call-submit' id='call-submit'>
</form> 

在创建/设置错误消息->第16行$errors1=请输入您的姓名之前,您正在回显错误消息->第4行;/谢谢你的回复,肖恩。你会如何建议我最好做出这一改变?我将整个PHP脚本从每个表单下方移动到表单上方。。。刚刚在服务器上测试过,但仍然无法正常工作。有没有更好的方法来编辑代码?如果您想在同一页面上处理表单,您需要在表单上方包含php代码,以便在尝试使用它们之前设置所有变量。如果您对代码进行了更改,请使用您尝试过的更改更新您的问题。这将更容易帮助您了解您当前所做/尝试的内容。我已根据您的反馈更新了代码,不确定我的编辑是否符合您的意思。此外,现在表单没有验证和发送成功/错误消息。