我有一个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>
答案 0 :(得分:4)
您的输入都缺少name
属性,该属性是通过post
发送到服务器的。
<input type="text" id="email" placeholder="Email" name="email">
您将使用$_POST['email']
我建议你抓住一个现成的库来处理这个http://swiftmailer.org/
答案 1 :(得分:1)
您也可以使用以下方法测试表单变量:
print_r($_POST);
显然你会想把它放到某种检查中,例如:
if($_POST)
{
print_r($_POST);
}
答案 2 :(得分: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...
}
答案 3 :(得分:0)
通过POST或GET从表单中提供的输入由HTML中给出的名称属性标识,而不是 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代码中(否则在首次显示表单时它将无法正常工作)。