2012-05-01 153 views
0

有人可以告诉我为什么这不显示窗体?如果我转到我托管的地址,该页面只会显示“您的邮件已发送,谢谢。”它似乎只是执行并显示最后一个功能。窗体不显示

<?php 

    function validateInput($data, $fieldName) { 
     global $errorCount; 
     if (empty($data)) { 
      echo "\"$fieldName\" is a required field.<br />\n"; 
      ++$errorCount; 
      $retval = ""; 
     } else { // only clean up the input if it isn't empty 
      $retval = trim($data); 
      $retval = stripsplashes($retval); 
     } 
     return($retval); 
    } 

    function validateEmail($data, $fieldName) { 
     global $errorCount; 
     if (empty($data)) { 
      echo "\"$fieldName\" is a required field.<br />\n"; 
      ++$errorCount; 
      $retval = ""; 
     } else { // only clean up the input if it isn't empty 
      $retval = trim($data); 
      $retval = stripsplashes($retval); 
      $pattern = "/^[\w-]+(\.[\w-]+)*@" . "[\w-]+(\.[\w-]+)*" . "(\.[[a-z]]{2,})$/i"; 
      if (preg_match($pattern, $retval) == 0) { 
       echo "\"$fieldName\" is not a valid e-mail address.<br />\n"; 
       ++$errorCount; 
      } 
     } 
     return($retval); 
    } 

    function displayForm($Sender, $Email, $Subject, $Message) { 
     ?> 
     <h2 style = "text-align:center">Contact Me</h2> 
     <form name="contact" action="ContactForm.php" method="post"> 
      <p>Your name: <input type="text" name="Sender" value="<?php echo $Sender; ?>" /></p> 
      <p>Your E-mail: <input type="text" name="Email" value="<?php echo $Sender; ?>" /></p> 
      <p>Subject: <input type="text" name="Subject" value="<?php echo $Subject; ?>" /></p> 
      <p>Message:<br /> 
       <textarea name="Message"><?php echo $Message; ?></textarea></p> 
      <p><input type="reset" value="Clear Form" />&nbsp; &nbsp;<input type="submit" name="Submit" value="Send Form" /></p> 
     </form> 
     <?php 
    } 

    $ShowForm = TRUE; 
    $errorCount = 0; 
    $Sender = ""; 
    $Email = ""; 
    $Subject = ""; 
    $Message = ""; 

    if (isset($_POST['Submit'])) { 
     $Sender = validateInput($_POST['Sender'],"Your Name"); 
     $Email = validateInput($_POST['Email'],"Your E-mail"); 
     $Subject = validateInput($_POST['Subject'],"Subject"); 
     $Message = validateInput($_POST['Message'],"Message"); 
     if ($errorCount == 0) 
      $ShowForm = FALSE; 
     else 
      $ShowForm = TRUE; 
    } 

    if ($ShowForm == TRUE) 
     if ($errorCount>0) {// if there were errors 
      echo "<p>Please re-enter the form information below.</p>\n"; 
      displayForm($Sender, $Email, $Subject, $Message); 
     } else { 
      $SenderAddress = "$Sender <$Email>"; 
      $Headers = "From: $SenderAddress\nCC: $SenderAddress\n"; 
      // Substitute your own e-mail address for [email protected] 
      $result = mail("[email protected]", $Subject, $Message, $Headers); 
      if ($result) 
       echo "<p>Your message has been sent. Thank you, " . $Sender . ".</p>\n"; 
      else 
       echo "<p>There was an error sending your message, " . $Sender . ".</p>\n"; 
     } 
    ?> 
+0

检查出'$ ShowForm = TRUE;':)的行 – Daan

回答

0

好吧,错误是因为大括号应该在if($ ShowForm == TRUE)之后,而不是if($ errorCount> 0)之后。

2

您有:

$showForm = TRUE; 

,当表单尚未提交,将导致条件语句总是为真与$errorCount == 0。在该条件的其他情况下,您不要拨打displayForm()

希望这会有所帮助。