为什么在以PHP格式提交数据之前会发生此验证错误?

为什么在以PHP格式提交数据之前会发生此验证错误?,php,Php,我正在使用PHP表单将数据转发到电子邮件地址。除了页面加载时出现的错误消息[“You have not enter a email”]之外,一切似乎都正常工作,在用户输入任何输入之前,而不是在提交时通过验证 表格在这里 注意:在搜索如何将数据转发到电子邮件后,我在网上找到了这段PHP代码,所以它不是我的。请原谅缺少正确的代码格式 <?php $to = $_REQUEST['sendto'] ; $from = $_REQUEST['Email'] ; $name = $_RE

我正在使用PHP表单将数据转发到电子邮件地址。除了页面加载时出现的错误消息[“You have not enter a email”]之外,一切似乎都正常工作,在用户输入任何输入之前,而不是在提交时通过验证

表格在这里

注意:在搜索如何将数据转发到电子邮件后,我在网上找到了这段PHP代码,所以它不是我的。请原谅缺少正确的代码格式

<?php 
 $to = $_REQUEST['sendto'] ; 
 $from = $_REQUEST['Email'] ; 
 $name = $_REQUEST['Name'] ; 
 $headers = "From: $from"; 
 $subject = "soulwatt.com Contact Data!!"; 

 $fields = array(); 
 $fields{"Name"} = "Name"; 
 $fields{"Company"} = "Company"; 
 $fields{"Email"} = "Email"; 
 $fields{"Phone"} = "Phone"; 
 $fields{"list"} = "Mailing List"; 
 $fields{"Comments"} = "Comments"; 

 $body = "Soul Watt has received the following information:\n\n";

 foreach($fields as $a => $b)   {
    $body .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]);
    } 

 $headers2 = "From: noreply@soulwatt.com";
 $subject2 = "Thank you for contacting Soul Watt!"; 
 $autoreply = "Thank you for contacting us. Somebody will get back to you as soon as possible, usualy within 48 hours. If you have any more questions, please consult our website at www.soulwatt.com";

 if($from == '') {
      print "You have not entered an email. Please enter your email and try again.";
      } 
 else {

 if($name == '') {
      print "You have not entered a name.<br />Please enter your name and try again.";
      } 

 else { 
 $send = mail($to, $subject, $body, $headers); 
 $send2 = mail($from, $subject2, $autoreply, $headers2);

 if($send)  {
     print "<p><span>THANK YOU FOR CONTACTING US!</span></p>";
     print "<p><span>Someone will get back to you as soon as possible, usually within 48 hours. If you need immediate assistance regarding booking Soul Watt, please call Randy at (828) 729-3199.</span></p>";
     }

 else  {
     print "<p><span>We encountered an error sending your mail, please notify webmaster@soulwatt.com</span></p>";
     } 
 }
}?>

谢谢你的帮助

这两条线:

$from = $_REQUEST['Email'] ; 
if($from == '') {
   print "You have not entered an email. Please enter your email and try again.";
}
这意味着您要检查
电子邮件
请求(
POST
GET
)键。第一次加载此页面时,此页面将为空。您可以添加一个检查,检查是否有
POST
,例如是否有提交

老实说,您的代码可能有很多问题:用户可以在其中添加各种内容,甚至可能在标题中添加内容以添加“To”字段等等。。你可能在这里制造垃圾邮件机。此部分:
$headers=“From:$From”只需在标题中添加来自
的请求字段。…

这两行:

$from = $_REQUEST['Email'] ; 
if($from == '') {
   print "You have not entered an email. Please enter your email and try again.";
}
这意味着您要检查
电子邮件
请求(
POST
GET
)键。第一次加载此页面时,此页面将为空。您可以添加一个检查,检查是否有
POST
,例如是否有提交


老实说,您的代码可能有很多问题:用户可以在其中添加各种内容,甚至可能在标题中添加内容以添加“To”字段等等。。你可能在这里制造垃圾邮件机。此部分:
$headers=“From:$From”只需在标题中添加来自
的请求字段。…

表单字段是否与您正在检查的名称相同

我是说

$from = $_REQUEST['Email'];
你应该

<input type='text' name='Email' /> <!-- Note the Capital E -->

我在这里补充我的意见:


使用$\u POST或$\u GET。避免$\u请求。这样你就可以更好地控制你的应用程序


另外,不要使用==“”检查空($from)

表单字段是否与正在检查的名称相同

我是说

$from = $_REQUEST['Email'];
你应该

<input type='text' name='Email' /> <!-- Note the Capital E -->

我在这里补充我的意见:


使用$\u POST或$\u GET。避免$\u请求。这样你就可以更好地控制你的应用程序


另外,不要用==“”检查空($from)

您想用它来包装验证部分

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    ... do validation here ...
}

... print form here ...

这将仅在您提交表单后运行验证代码。现在,它在每次加载页面时都会运行,因此当然没有表单数据可供第一次验证。

您希望将验证部分包装在

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    ... do validation here ...
}

... print form here ...
这将仅在您提交表单后运行验证代码。现在,它在每次加载页面时都会运行,因此当然没有表单数据可供第一次验证。

好的,如果表单已打开,并且您

<form method="post" action="contact.php" name="contact_form" id="contact_form">

action=“contact.php”:这意味着它正在处理同一地址上的表单,因此您将在同一页面上看到表单处理的结果,并且由于表单是空的,并且无论是否已发布,您都在检查表单,因此您会收到该错误

确定,因此如果表单已打开且您已

<form method="post" action="contact.php" name="contact_form" id="contact_form">


action=“contact.php”:这意味着它正在处理同一地址上的表单,因此您将在同一页面上看到表单处理的结果,并且由于表单是空的,并且无论是否已发布,您都在检查表单,因此会出现该错误

使用$\u POST或$\u get。避免$\u请求。这样你就可以更好地控制你的应用程序。另外,不要用==“”检查空($from)使用$\u POST或$\u GET。避免$\u请求。这样你就可以更好地控制你的应用程序。另外,不要用==“”检查空($from)谢谢大家!我是这个网站的新手,实际上是php。我们将研究建议并回复您…谢谢大家!我是这个网站的新手,实际上是php。我会研究一下建议,然后再给你回复……好的!我将if语句添加到POST方法中,现在它似乎正在工作。当然,我知道这不是一个很好的代码,所以即使它能工作,我还是要用今天在这里学到的,继续在itOK上工作!我将if语句添加到POST方法中,现在它似乎正在工作。当然,我知道这不是一个很好的代码,所以即使它可以工作,我也会接受今天在这里学到的东西,继续工作