2012-05-01 22 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($ errorCount> 0)ではなく、if($ ShowForm == TRUE)の後ろに中括弧があったためです。

2

あなたが持っている:

$showForm = TRUE; 

はどのフォームがまだ提出されていない場合、条件文は常に$errorCount == 0で真であることにつながります。その条件付きのelseケースではdisplayForm()を呼び出さない。

これが役に立ちます。

関連する問題