首先我要说这是我大学以来第一次触摸php,而且我的知识非常有限。我按照教程,在一个客户端的bootstrap网站上实现了一个联系表单。一切都有效,除了"消息"因为它是一个文本区而不是输入区。为了测试,我用一个输入交换了textarea,它工作正常。是否有另一种捕获用户输入文本的方法?这似乎很简单,但我一直在努力工作几个小时,似乎无法找到解决方案。我使用以下代码作为消息html:
<div class="form-group">
<label for="message" class="col-sm-2 control-label">Message</label>
<div class="col-sm-10">
<textarea class="form-control" rows="4" name="Enter Your Message" ><?php echo htmlspecialchars($_POST['message']);?></textarea>
<?php echo "<p class='text-danger'>$errMessage</p>";?>
</div>
</div>
这是我正在使用的php,它会显示错误消息&#39;请输入您的消息&#39;
if ($_POST["submit"]) {
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$human = intval($_POST['human']);
$from = 'bot@dtosolutions.com';
$to = 'eric@ericbelldesigns.com';
$subject = 'Message from Contact Form';
$body ="From: $name\n E-mail: $email\n Message:\n $message";
//Check if name is entered
if (!$_POST['name']) {
$errName = 'Please enter your name';
}
//Check if email is valid
if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$errEmail = 'Please enter a valid email';
}
//Check if a message is entered
if (!$_POST['message']) {
$errMessage = 'Please enter your message';
}
//Check if anti-bot test is correct
if ($human !== 7) {
$errHuman = 'Your anti-spam is incorrect';
}
// If there are no errors - send the email
if (!$errName && !$errEmail && !$errMessage && !$errHuman) {
if(mail ($to, $subject, $body, $from)) {
$result='<div class="alert alert-success">Thank You! I will be in touch</div>';
} else {
$result='<div class="alert alert-danger">Sorry there was an error sending your message.</div>';
}
}
}
答案 0 :(得分:2)
它显示错误消息Please Enter you Message
,因为您的消息未发布到您的php脚本。根据您的代码,您需要检查此行中的message
if (!$_POST['message']) {
$errMessage = 'Please enter your message';
}
但没有名为message
的输入或textarea字段。要将您的消息发布到您的php脚本,您应该将textarea
名称Enter Your Message
更改为message
,然后它才能完美运行。
答案 1 :(得分:0)
我不确定您为何要使用<?php echo htmlspecialchars($_POST['message']);?>
打印邮件,但我在此处看到了一些可能存在的问题。
message
的输入。文本区域的名称是
Enter Your Message
。带空格的名称将被转换为
$ _POST中的下划线。这意味着你需要参考
$_POST["Enter_Your_Message"]
。