联系表格没有返回适当的信息

时间:2015-02-24 17:59:26

标签: php forms twitter-bootstrap email contact

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

首先,用户提交的电子邮件显示为从我的网站主机收到。它也不包括这个人的名字,我认为这个名字包含在我的PHP中

Screenshot of email field returned as number

这是我的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

1 个答案:

答案 0 :(得分:1)

首先,您没有在标题中定义。你需要

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

除了设置from和cc:carbon copy或bcc:blind carbon copy email address之外,您还可以修改标题以发送大多数情况下所需的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语句也不会检查是否所有字段都已传入。您需要将其分解或单独检查字段或使用客户端执行边JavaScript字段验证。

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