简体   繁体   中英

How to set blind input field to validate form?

im trying to set up a blind input field with php that will check and make sure the input field is empty and if it is not empty it will not send the message that it is set up to send but I've run into several problems with placement and wording of this here is my code any input would greatly be appreciated.

<?php

// Set email variables
$email_to = 'email@example.com';
$email_subject = 'Website Message';

// Set required fields
$required_fields = array('fullname','email','comment');

$fakes = array('Email1');

// set error messages
$error_messages = array(
    'fullname' => 'Please enter a Name to proceed.',
    'email' => 'Please enter a valid Email Address to continue.',
    'comment' => 'Please enter your Message to continue.'
);

// Set form status
$form_complete = FALSE;

// configure validation array
$validation = array();

// check form submittal
if(!empty($_POST)) {

    // Sanitise POST array
    foreach($_POST as $key => $value) $_POST[$key] = remove_email_injection(trim($value));

    foreach($fakes as $fake) 
        if($fake == 'Email1') if(!check_for_content($_POST[$fake])) die;
        else {

    // Loop into required fields and make sure they match our needs
    foreach($required_fields as $field) {       
        // the field has been submitted?
        if(!array_key_exists($field, $_POST)) array_push($validation, $field);

        // check there is information in the field?
        if($_POST[$field] == '') array_push($validation, $field);

        // validate the email address supplied
        if($field == 'email') if(!validate_email_address($_POST[$field])) array_push($validation, $field);
    }

    // basic validation result
    if(count($validation) == 0) {
        // Prepare our content string
        $email_content = 'New Website Comment: ' . "\n\n";

        // simple email content
        foreach($_POST as $key => $value) {
            if($key != 'submit') $email_content .= $key . ': ' . $value . "\n";
        }

        // if validation passed ok then send the email
        mail($email_to, $email_subject, $email_content);

        // Update form switch
        $form_complete = TRUE;
    }
}
}
function validate_email_address($email = FALSE) {
    return (preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i', $email))? TRUE : FALSE;
}

function remove_email_injection($field = FALSE) {
   return (str_ireplace(array("\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:"), '', $field));
}

function check_for_content($fake = FALSE) {
    return (preg_match('[A-Z0-9._%+-]', $Email1))? TRUE : FALSE;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>

    <!-- Contact Form Designed by James Brand @ dreamweavertutorial.co.uk -->
    <!-- Covered under creative commons license - http://dreamweavertutorial.co.uk/permissions/contact-form-permissions.htm -->

    <title>Contact Form</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>
    <script type="text/javascript" src="validation/validation.js"></script>
    <script type="text/javascript">
        var nameError = '<?php echo $error_messages['fullname']; ?>';
        var emailError = '<?php echo $error_messages['email']; ?>';
        var commentError = '<?php echo $error_messages['comment']; ?>';
    </script>
    </head>

    <body>
<div id="Contactus">
      <p>Chisel Multimedia</p>
      <p>275 Roswell Street NE <br />
    Marietta GA 30060</p>
    </div>
<br />
<div id="formWrap">
      <div id="form">
    <?php if($form_complete === FALSE): ?>
    <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" id="comments_form">
        <div id="label1" 865style="display:none">
        <div class="row">
        <div class="label">Email</div>
        <!-- end .label -->
        <div class="input">
              <input type="text" id="Email1" class="detail" name="Emial1"  />
            </div>
        <!-- end .input -->
        <div class="context">e.g. John Smith or Jane Doe</div>
        <!-- end .context--> 
      </div>
          <!-- end .row -->
          </div>


        <div class="row">
        <div class="label">Your Name</div>
        <!-- end .label -->
        <div class="input">
              <input type="text" id="fullname" class="detail" name="fullname" value="<?php echo isset($_POST['fullname'])? $_POST['fullname'] : ''; ?>" />
              <?php if(in_array('fullname', $validation)): ?>
              <span class="error"><?php echo $error_messages['fullname']; ?></span>
              <?php endif; ?>
            </div>
        <!-- end .input -->
        <div class="context">e.g. John Smith or Jane Doe</div>
        <!-- end .context--> 
      </div>
          <!-- end .row -->

          <div class="row">
        <div vlass="label">Your Email Address</div>
        <!-- end .lable -->
        <div class="input">
              <input type="text" id="email" class="detail" name="email" value="<?php echo isset($_POST['email'])? $_POST['email'] : ''; ?>" />
              <?php if(in_array('email', $validation)): ?>
              <span class="error"><?php echo $error_messages['email']; ?></span>
              <?php endif; ?>
            </div>
        <!-- end .input -->
        <div class="context">abc@bca.com</div>
        <!-- end .context--> 
      </div>
          <!-- end .row -->

          <div class="row">
        <div vlass="label">Your Message</div>
        <!-- end .lable -->
        <div class="input">
              <textarea id="comment" name="comment" class="mess"><?php echo isset($_POST['comment'])? $_POST['comment'] : ''; ?></textarea>
              <?php if(in_array('comment', $validation)): ?>
              <span class="error"><?php echo $error_messages['comment']; ?></span>
              <?php endif; ?>
            </div>
        <!-- end .input --> 
      </div>
          <!-- end .row -->

          <div class="submit">
        <input type="submit" id="submit" name="submit" value="Send Message" />
      </div>
          <!-- end submit -->
        </form>
    <?php else: ?>
    <p style="font-size: 10px; color: #255e67;     width: 65%;">Thank you for your Message!</p>
    <?php endif; ?>
  </div>
      <!-- end form --> 
    </div>
<!-- end formWrap -->

</body>
</html>

You have to much errors in your code, that prevents you from getting correct results

<input type="text" id="Email1" class="detail" name="Emial1"  />

Pay attention, that name="Emial1" , but in php code you check for 'Email1' . Correct one of those. Next piece:

        function check_for_content($fake = FALSE) {
            return (preg_match('[A-Z0-9._%+-]', $Email1))? TRUE : FALSE;
        }

Using $Email1 variable is just out of place. Regex expression is lack of boundaries. At least it should be

        function check_for_content($fake = FALSE) {
            return (preg_match('/[A-Z0-9._%+-]/i', $fake))? TRUE : FALSE;
        }

And when you calling this function why Not condition?

if($fake == 'Email1') if(!check_for_content($_POST[$fake])) die();

I think it should be vice versa.

Anyway, personally I'll just use something like this:

foreach($fakes as $fake)
    if(!empty($_POST[$fake])) { die();} 
// dont need 'else'

Also when debugging your php code, make sure you turn on errors, it realy helps

error_reporting(0);
ini_set('display_errors', 0);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM