简体   繁体   English

如何设置盲输入字段以验证表单?

[英]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设置一个盲输入字段,它将检查并确保输入字段为空,如果不为空,它将不会发送设置为要发送的消息,但是我遇到了一些问题这里的位置和措辞是我的代码,任何输入将不胜感激。

<?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' . 请注意,该name="Emial1" ,但是在php代码中您检查了'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. 仅使用$ Email1变量是不合适的。 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 另外,在调试php代码时,请确保打开错误,这确实有帮助

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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