2013-06-26 73 views
-2

我有一个在联系表单页面上执行的PHP表单。我已经得到它的工作 - 但它目前只进行检查,以确保名称和电子邮件进入。我试图让它也检查一个消息,但我的尝试只是cos页面不加载后的PHP。下面是我有:PHP POST表单验证错误

<?php 
$to = "[email protected]" ; 
$from = $_REQUEST['Email'] ; 
$name = $_REQUEST['Name'] ; 
$headers = "From: $from"; 
$subject = "Web Contact Data"; 
$startmonth = $_REQUEST['StartMonth']; 
$startyear = $_REQUEST['StartYear']; 
$endmonth = $_REQUEST['EndMonth']; 
$endyear = $_REQUEST['EndYear']; 
$message = $_REQUEST['Message']; 

$fields = array(); 
$fields{"Name"} = "Name"; 
$fields{"Email"} = "Email"; 
$fields{"Phone"} = "Phone"; 

$selectedProjects = 'None'; 
if(isset($_POST['projects']) && is_array($_POST['projects']) && count($_POST['projects']) > 0){ 
    $selectedProjects = implode(', ', $_POST['projects']); 
} 
$selectedSkills = 'None'; 
if(isset($_POST['skills']) && is_array($_POST['skills']) && count($_POST['skills']) > 0){ 
    $selectedSkills = implode(', ', $_POST['skills']); 
} 
$selectedNoRush = 'None'; 
if(isset($_POST['norush']) && is_array($_POST['norush']) && count($_POST['norush']) > 0){ 
    $NoRush= implode(', ', $_POST['norush']); 
} 
$selectedWhenReady = 'None'; 
if(isset($_POST['whenready']) && is_array($_POST['whenready']) && count($_POST['whenready']) > 0){ 
    $WhenReady= implode(', ', $_POST['whenready']); 
} 
$selectedBudget = 'None'; 
if(isset($_POST['budget']) && is_array($_POST['budget']) && count($_POST['budget']) > 0){ 
    $selectedBudget= implode(', ', $_POST['budget']); 
} 

$body = "We have received the following information:\n\n"; foreach($fields as $a => $b){$body .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]);} 
$body .= "\n" . 'Selected Projects: ' . $selectedProjects . "\n"; 
$body .= 'Selected Skills: ' . $selectedSkills . "\n\n"; 
$body .= 'Start Date: ' . $startmonth . " " . $startyear . " " . $NoRush . "\n"; 
$body .= 'End Date: ' . $endmonth . " " . $endyear . " " . $WhenReady . "\n"; 
$body .= 'Budget: ' . $selectedBudget . "\n\n"; 
$body .= 'Message:' . $message . "\n"; 



$headers2 = "From: [email protected]"; 
$subject2 = "Thank you for contacting us"; 
$autoreply = "Thank you for contacting us. Somebody will get back to you as soon as possible, usually within 48 hours."; 

if($from == '') {print "You have not entered an email, please go back and try again";} 
else { 
if($name == '') {print "You have not entered a name, please go back and try again";} 
else { 
$send = mail($to, $subject, $body, $headers); 
$send2 = mail($from, $subject2, $autoreply, $headers2); 
if($send) 
{print "Thank you. Your request has been successfully submitted.";} 
else 
{print "We encountered an error sending your mail, please check your details are correct or email us at [email protected]"; } 
} 
} 
?> 

所以上面的一切工作正常,但是当我的名字/电子邮件检查后添加以下代码,它打破:

if($message == '') {print "You have not entered a message, please go back and try again";} 
else { 

我在做什么错?

谢谢! MC

+0

这是最不寻常的包围式的,我最近看到... –

+0

'它breaks'。它以什么方式打破?你收到什么信息?你的代码看起来是如何与包含的行(只显示前后两行,而不是只有新行) – Arjan

+0

@rr这是我第一次去PHP代码 - 请让我知道为什么它是不寻常的,因为我正在拼凑在一起,这将真正有助于知道... – Mike

回答

0

我不能告诉你已经显示的代码,但是你是否关闭了else语句中的大括号?

if($message == '') {print "You have not entered a message, please go back and try again";} 
else {} <---- 
+0

就是这样,我觉得很愚蠢。 – Mike

1
if($name == '') 
{ 
    print "You have not entered a name, please go back and try again"; 
} 
else if($message == '') { 
    // do what ever you want 
} 
else { 
    $send = mail($to, $subject, $body, $headers); 
    $send2 = mail($from, $subject2, $autoreply, $headers2); 

....此处添加其余