联系表未返回正确信息

Contact form not returning proper information

我目前正在使用 Bootstrap 框架和 PHP 建立功能齐全的联系表。我收到了来自表单的测试电子邮件,但它没有按照我理解的方式显示内容,我遇到了一些其他问题。

首先,用户提交的电子邮件显示为从我的网站主机收到。它也不包括人名,我想我已经把它包括在我的 PHP

中了

这是我的 contact.php 代码和 index.html 文件中的表格

<?php 

$to = 'example@gmail.com';
$name = $_POST['name'];
$email = $_POST['email'];
$subject=$_POST['subject'];
$message = $_POST['msg'];

if ($_POST){
mail($to, $subject, $message);
$confirm= "Your email was sent successfully!";
echo "<script type='text/javascript'>confirm('$confirm');</script>";
}
else {
    $error_msg= "All fields are required!";
    echo "<script type='text/javascript'>alert('$error_msg');</script>";
}
?>

index.html

<form class="form-horizontal" role="form" action="contact.php" method="post">
                <div class="modal-header">
                  <h2>Contact</h2>
                </div>

                <div class="modal-body">
                <!--name-->
                  <div class="form-group">
                      <label for="name" class="col-sm-2 control-label">Name</label>
                      <div class="col-sm-10">
                        <input type="text" class="form-control" name="name" id="name" placeholder="First and Last Name">
                      </div>
                  </div>
                <!--email-->
                  <div class="form-group">
                      <label for="email" class="col-sm-2 control-label">Email</label>
                      <div class="col-sm-10">
                        <input type="email" class="form-control" name="email" id="email" placeholder="example@somewhere.com">
                      </div>
                  </div>
                <!--subject-->
                <div class="form-group">
                      <label for="subject" class="col-sm-2 control-label">Subject</label>
                      <div class="col-sm-10">
                        <input type="text" class="form-control" name="subject" id="subject" placeholder="Enter subject here...">
                      </div>
                  </div>
                <!--message-->
                  <div class="form-group">
                      <label for="msg" class="col-sm-2 control-label">Message</label>
                      <div class="col-sm-10">
                        <textarea class="form-control" rows="4" name="msg" id="msg" placeholder="Enter message here..."></textarea>
                      </div>
                  </div>

                </div>

                <div class="modal-footer">
                  <a class="btn btn-default" data-dismiss="modal">Close</a>
                  <button type="submit" class="btn btn-primary">Send</button>
                </div>
          </form>

另一个意外问题是,一旦提交页面,就会加载一个空白页面 (contact.php)。我想,看看我的代码,会弹出 javascript 警告或确认框吗?我是新手,如果这些是愚蠢的问题,我深表歉意。

谢谢 -K

首先,您没有在 header 中定义 from。你需要

$headers = "From: sender_email@your_domain.com\r\n";
mail($to,$subject,$message,$headers);

除了设置from和cc:carbon copy或bcc:blind carbon copy电子邮件地址外,您还可以修改header发送html消息,这在大多数情况下是需要的。

// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

// More headers
$headers .= 'From: <webmaster@example.com>' . "\r\n";
$headers .= 'Cc: myboss@example.com' . "\r\n";

将此代码合并到您的 if 语句中。我还注意到你

else {
    $error_msg= "All fields are required!";

即使只有一个字段作为 $_POST 方法传入,else 语句也不会检查是否所有字段都已传入。您需要将其分解或单独检查字段或在客户端上执行side JavaScript 字段验证。

什么是确认 javascript 功能?你能 post 放在这里吗?如果您只是在寻找警报,您可以直接在脚本标签之间插入警报功能。