【发布时间】:2015-06-04 22:11:17
【问题描述】:
我有以下 html 表单,当用户单击提交时,它会触发 contactengine.php 中的 php 代码,但我收到的电子邮件和生成的 .txt 表单中缺少这些值。
<!------------------from start------------>
<form method="POST" action="contactengine.php" class="form-inline" >
<div class="form-group">
<label>Full Name*</label><br>
<input name="full_name" type="text" class="form-control" placeholder="Full Name" id="full_name" required>
</div>
<div class="form-group">
<label>Telephone *</label><br>
<input name="contact_tel" type="text" class="form-control" placeholder="Telephone" id="contact_tel" required>
</div>
<div class="form-group">
<label>Email *</label><br>
<input name="contact_email" type="email" class="form-control" placeholder="Email Address" id="contact_email" required>
</div>
<div class="form-group">
<label>Subject of Enquiry *</label><br>
<select name="sub_enquiry" class="form-control" id="sub_enquiry">
<option value="Assesments" >Assesments</option><option value="Services" >Services</option>
<option value="Inpections" >Inpections</option>
<option value="Other" >Other</option>
</select>
</div><br> <br>
<label>Your message *</label><br>
<textarea name="contact_msg" class="form-control" rows="5" id="contact_msg" required ></textarea> <br >
<br >
<button type="submit" class="btn btn-purple" ><span class="glyphicon glyphicon-envelope"></span> Submit</button>
</form>
<!----------------------php form------------------>
<?php
$to = "xxxx@gmail.com";
$Subject = "OFSUK.ORG";
$full_name = $_POST['full_name'];
$contact_email = $_POST['contact_email'];
$contact_tel = $_POST['contact_tel'];
$sub_enquiry = $_POST['sub_enquiry'];
$contact_msg = $_POST['contact_msg'];
// validation
$validationOK=true;
if (!$validationOK) {
header("location:/error.php");
exit;
}
// prepare email body text
$Body = "";
$Body .= "\n";
$Body .= "Name: ";
$Body .= $full_name;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $contact_email;
$Body .= "\n";
$Body .= "Telephone: ";
$Body .= $contact_tel;
$Body .= "\n";
$Body .= "Enquiry: ";
$Body .= $sub_enquiry;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $contact_msg;
$Body .= "\n";
// send email
$success = mail($to, $Subject, $Body);
$email_from = $full_name.'<'.$email_from.'>';
$myfile = fopen("emails.txt", "a") or die("Unable to open file!");
$txt = $Body;
fwrite($myfile, "\n". $txt);
fclose($myfile);
// redirect to success page
if ($success){
header("location:/");
}
else{
header("location:/contact-us.php");
}
?>
这两个存储在两个位置,但工作正常,只是没有得到任何数据。
【问题讨论】:
-
尽量不要以大写字符开头变量名。只是更好的编码实践。
-
请首先执行
var_dump($_POST);,以确保您的帖子变量达到PHP。 -
另外请注意,您需要过滤和清理用户输入,否则您的表单很快就会被垃圾邮件发送者利用。
-
在使用
$full_name = var_dump($_POST['full_name']); $contact_email = var_dump($_POST['contact_email']); $contact_tel = var_dump($_POST['contact_tel']); $sub_enquiry = var_dump($_POST['sub_enquiry']); $contact_msg = var_dump($_POST['contact_msg']);后仍然得到空值 -
不,@MarkusAO 是说在您的电子邮件处理页面顶部执行
var_dump($_POST);以查看$_POST是否具有值。
标签: php html twitter-bootstrap phpmailer