PHP返回htmlspecialchar post错误


php echo htmlspecialchar post error

让我先说一下,这是我大学毕业后第一次接触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 Messagemessage,然后它将完美地工作。

我不知道为什么要用<?php echo htmlspecialchars($_POST['message']);?>打印消息,但我在这里看到了一些可能的问题。

    没有名称为message的输入。文本区域的名称是Enter Your Message。带有空格的name将被转换为$_POST中的下划线。这意味着你需要参考$_POST["Enter_Your_Message"]
  • 我建议您在将其值赋给变量之前检查输入是否已填充。