让我先说一下,这是我大学毕业后第一次接触php,我的知识非常有限。我遵循了一个教程,以便在一个客户端引导网站上实现一个联系表单。除了"message"字段之外,其他字段都可以正常工作,因为它是一个文本区域而不是输入。为了测试,我用输入交换了文本区域,它工作得很好。是否有其他方法捕获用户输入的文本以发布?这看起来很简单,但我已经纠结了好几个小时,似乎找不到解决方案。我使用以下代码的消息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,结果显示错误消息'Please enter your message'
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>';
}
}
}
它显示错误消息Please Enter you Message
,因为您的消息没有发布到您的php脚本。根据您的代码,您正在检查这一行
message
。if (!$_POST['message']) {
$errMessage = 'Please enter your message';
}
,但没有名为message
的输入或文本区域字段。发布你的消息到你的php脚本,你应该改变你的textarea
名称Enter Your Message
到message
,然后它将完美地工作。
我不知道为什么要用<?php echo htmlspecialchars($_POST['message']);?>
打印消息,但我在这里看到了一些可能的问题。
- 没有名称为
- 我建议您在将其值赋给变量之前检查输入是否已填充。
message
的输入。文本区域的名称是Enter Your Message
。带有空格的name将被转换为$_POST中的下划线。这意味着你需要参考$_POST["Enter_Your_Message"]
。