HTML5 和 php 电子邮件表单不发送详细信息


HTML5 and php email form is not sending details

我希望有人能在这里帮助我。 我创建了一个带有HTML5和php联系表单的网页。 当我按下提交按钮时,一封电子邮件被发送到它应该发送到的地方,但所有字段都是空白的。

我知道我错过了一些简单的东西,但我就是看不到它。

这是 HTML

<form method="POST" action="submit.php">
<label form="HTML Form">Full Name:</label>
<input maxlength="45" size="35" placeholder="Full Name" required name="name" id="name" type="text">
<label form="HTML Form">Phone Number:</label>
<input maxlength="45" size="35" placeholder="Phone" required name="phone" id="phone" type="text">
<label form="HTML Form">Email Address:</label>
<input maxlength="75" size="35" placeholder="Email Address" required name="email" id="email" type="email">
<label form="HTML Form">Comment:</label>
<textarea maxlength="300" placeholder="Comment"
    wrap="soft"
    rows="10"
    cols="40"
    name="comment" id="comment"
    required></textarea>
<input formmethod="post" value="Send" formaction="submit.php" type="submit">
<br>
</form>

这是PHP

<?php
/* checking if data was sent */
if(isset($_POST))
{
      foreach($_POST as $key => $field)
        {
            if(trim($field==""))
              echo "this field is required, your input is blank:   <b>$key</b>     <br>";
            $key=$field; //putting the response into variables
        }
    /* starting the email message */
    $to = "email@mywebsite.com"; // your email address
    $subject = "Contact form submission";
    $message = "Full Name: $name <br> Phone: $phone <br>";
    $message .= "Email Address: $email <br> Comment: <br> $comment";
    $headers = "From:" . $from."'r'n";
    $headers .= "MIME-Version: 1.0'r'n";
    $headers .= "Content-Type: text/html; charset=UTF-8'r'n";
    if(mail($to,$subject,$message,$headers))
    {
        echo "Email was sent";
    }
}
?>

错误在于$_POST变量的赋值:

  foreach($_POST as $key => $field)
    {
        if(trim($field==""))
          echo "this field is required, your input is blank:   <b>$key</b>     <br>";
        $$key=$field; //putting the response into variables  # <------
    }

您必须使用语法$$key来创建变量变量。

您的分配将$key变量设置为数组$_POST最后一个值。

另请注意:变量在哪里定义$from

您没有从 POST 数组中获取变量。例如$phone = $_POST["电话"] 等。

如果您尝试将$_POST键名称转换为变量,则需要执行以下操作:$$key = $field;而不是$key = $field;。这些是变量。