联系人表单-唯一问题:PHP不返回输入

联系人表单-唯一问题:PHP不返回输入,php,html,forms,email,input,Php,Html,Forms,Email,Input,我已经为此工作了几天,阅读了许多以前提出的问题,以及一些教程网站。。。联系人表单提交、确认和重定向。。。它会将带有标题和主题行的电子邮件发送到正确的地址。。。只是没有输入。。。没有发件人电子邮件,没有姓名输入,没有电子邮件输入,没有消息输入。。。帮助如此接近,却又如此遥远。。。非常感谢任何建议~我写HTML和CSS,JS新手,几乎没有PHP经验。。。提前谢谢你!: 以下是HTML联系人表单: <form action= "contact-form.php" id="contact-for

我已经为此工作了几天,阅读了许多以前提出的问题,以及一些教程网站。。。联系人表单提交、确认和重定向。。。它会将带有标题和主题行的电子邮件发送到正确的地址。。。只是没有输入。。。没有发件人电子邮件,没有姓名输入,没有电子邮件输入,没有消息输入。。。帮助如此接近,却又如此遥远。。。非常感谢任何建议~我写HTML和CSS,JS新手,几乎没有PHP经验。。。提前谢谢你!:

以下是HTML联系人表单:

 <form action= "contact-form.php" id="contact-form" method="post">
                            <fieldset>
                                <label><input name="cf-name" type="text" value="Your     Name" onBlur="if(this.value=='') this.value='Your Name'" onFocus="if(this.value =='Your     Name' ) this.value=''" /></label>
                                <label>
                                <input name="cf-email" type="text" value="Email" onBlur="if(this.value=='') this.value='Email'" onFocus="if(this.value =='Email' ) this.value=''" />
                                </label>
                        <textarea name="cf-message" onBlur="if(this.value=='') this.value='Message'" onFocus="if(this.value =='Message' ) this.value=''">Message</textarea>
                                <div class="buttons">
                                    <p><a href="#" onClick="document.getElementById('contact-form').reset()">Clear</a>
                                      <a href="#" onClick="document.getElementById('contact-form').submit()">Send</a></p>
                                    <p>&nbsp;
                                        </p>
                                </div>                                          
                          </fieldset>           
                        </form>
下面是PHP contact-form.PHP:

<?php
$field_name = $_POST['cf_name'];
$field_email = $_POST['cf_email'];
$field_message = $_POST['cf_message'];

$mail_to = 'info@anelectrician.net';
$subject = 'Message from a website visitor...'.$field_name;

$body_message = 'From:'.$field_name."\n";
$body_message .= 'E-mail:'.$field_email."\n";
$body_message .= 'Message:'.$field_message;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
<script language="javascript" type="text/javascript">
    alert('Thank you for your correspondence. We will contact you shortly.');
    window.location = 'index.html';
</script>
<?php
}
else { ?>
<script language="javascript" type="text/javascript">
    alert('Message failed. Please, send an email to info@anelectrician.net');
    window.location = 'contact.html';
</script>
<?php
}
?>

你在这里似乎有不同。。。在PHP中使用下划线,在HTML中使用破折号

通过使用以下工具进行调试,您始终可以测试出错的地方以及代码的位置:

print_r($_POST);

这将有助于您判断您是否只是没有使用正确的键。

您的$\u帖子中的项目需要与输入的名称属性匹配。您的输入有破折号,但$\u POST引用有下划线。例如:

应该

更改这些

$field_name = $_POST['cf_name'];
$field_email = $_POST['cf_email'];
$field_message = $_POST['cf_message'];
对这些

$field_name = $_POST['cf-name'];
$field_email = $_POST['cf-email'];
$field_message = $_POST['cf-message'];

html输入有破折号,而PHP名称输入有下划线。

sidenote,您需要验证用户输入,在使用前检查设置,并检查cf_电子邮件实际上是电子邮件;此外,您没有电子邮件头注入保护,这将导致您的服务器发送垃圾邮件感谢您Loz。。。好的谢谢smc和所有人!。。。是的,嗯,现在感觉很可笑。。。英雄联盟我真的很感激你的建议!再次感谢!>。这应该是对这个荒谬问题的公认答案。