0

我有一个联系表格,它是 HTML-PHP 混合体。

PHP 脚本旨在将表单数据发送到电子邮件地址,但它仅发送元素 ID,而不是附加提交的值。

这是我正在使用的代码:

<?php 
$ToEmail = 'email@yahoo.com'; 
$EmailSubject = 'Site contact form'; 
$mailheader = "From: ".$_POST["email"]."\r\n"; 
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n"; 
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$MESSAGE_BODY = "Name: ".$_POST["name"].""; 
$MESSAGE_BODY .= "Email: ".$_POST["email"].""; 
$MESSAGE_BODY .= "Subject: ".$_POST["subject"]."";
$MESSAGE_BODY .= "Comment: ".nl2br($_POST["comment"]).""; 
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); 
?>

                            <form class="form-horizontal" name="contactform" action="contact.php" method="post">
                                  <div class="control-group">
                                    <label class="control-label" for="name">Name*</label>
                                    <div class="controls">
                                      <input type="text" id="name" placeholder="Name">
                                    </div>
                                  </div>
                                  <div class="control-group">
                                    <label class="control-label" for="email">Email*</label>
                                    <div class="controls">
                                      <input type="text" id="email" placeholder="Email">
                                    </div>
                                  </div>
                                  <div class="control-group">
                                    <label class="control-label" for="subject">Subject*</label>
                                    <div class="controls">
                                      <input type="text" id="subject" placeholder="Subject">
                                    </div>
                                  </div>
                                   <div class="control-group">
                                    <label class="control-label" for="comment">Message*</label>
                                    <div class="controls">

                                      <textarea rows="4" id="comment" placeholder="Type your message here..."></textarea>
                                    </div>
                                  </div>
                                  <div class="control-group">
                                    <div class="controls">
                                      <p> *Required fields</p>
                                      <button type="submit" name="submit" class="btn">Submit</button>
                                    </div>
                                  </div>
                            </form>
4

4 回答 4

4

您的输入都缺少name属性,该属性是通过发送post到服务器的。

<input type="text" id="email" placeholder="Email" name="email">

您将使用$_POST['email']

我建议你拿一个现成的图书馆来处理这个问题,比如http://swiftmailer.org/

于 2013-08-05T20:45:33.077 回答
1

您也可以使用以下方法测试表单变量:

print_r($_POST);

显然,您希望将其放入某种后期检查中,例如:

if($_POST)
{
    print_r($_POST);
}
于 2013-08-05T20:51:34.400 回答
0

正如user2023...已经说过的,您的输入表单缺少该name属性。

将您的行更改为:

<input type="text" id="name" name="name" placeholder="Name">
<input type="text" id="email" name="email" placeholder="Email">
<input type="text" id="subject" name="subject" placeholder="Subject">
<textarea rows="4" id="comment" name="comment" placeholder="Type your message here..."></textarea>

然后在您的表单处理脚本中,您可以执行以下操作:

if( isset($_POST['submit']) ) { //checking if the form was submitted

print_r($_POST); //this would give you all the submitted fields

$name = $_POST["name"];
$email = $_POST["email"];
//and so on...

}
于 2013-08-05T20:53:37.157 回答
0

通过表单中的 POST 或 GET 给出的输入由HTML 中给出的name属性标识,而不是id。所以你应该给

<input type="text" name="name" placeholder="Name" />

在您的 html 中,并用于$_POST["name"]访问处理代码中的值。

另外,我认为您使用相同的文件contact.php来显示表单的代码和处理表单输入的 PHP 代码。没关系,但在这种情况下,您需要进行检查

if (isset ($_POST ["submit"]) {
    /* code to process input from user */
}

在您的 PHP 代码中(否则在第一次显示表单时它将无法正常工作)。

于 2013-08-05T21:01:21.647 回答