php echo htmlspecialchar发布错误

时间:2015-05-31 20:38:27

标签: php html twitter-bootstrap

首先我要说这是我大学以来第一次触摸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>';       
        }

    }


}

2 个答案:

答案 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"]
  • 我建议您在将输入值分配给变量之前检查输入是否已填充。