Javascript 使用PHP、JS和Ajax验证contactform

Javascript 使用PHP、JS和Ajax验证contactform,javascript,php,ajax,validation,Javascript,Php,Ajax,Validation,我对输入联系人表单的内容的验证有问题 以下是表格: <script src="http://malsup.github.com/jquery.form.js"></script> <script> $(document).ready(function(){ $('#contact_messenbrinkeu').ajaxForm( function(){ alert("Your message has been send!")

我对输入联系人表单的内容的验证有问题

以下是表格:

<script src="http://malsup.github.com/jquery.form.js"></script> 
<script>
$(document).ready(function(){ 
  $('#contact_messenbrinkeu').ajaxForm(
     function(){ 
       alert("Your message has been send!"); 
     }
    )
})
</script>
</head>

<body>

<section id="page">
<?php include("includes/header.php"); ?>

<section id="articles">                
<article id="article1">

<div id="contact-form">    

<form id="contact_messenbrinkeu" action="sendform.php" method="post">
<fieldset id="form">

    <label for="name">Name*</label><br>
    <input type="text" name="name" placeholder="Your Name"title="enter your name" class="alpha required"><br>

    <label for="email">E-mail*</label><br>
    <input type="email" name="email" placeholder="mail@example.com" title="Enter your e-mail address" class="mail required"><br>

    <label for="phone">Phone</label><br>
    <input type="text" name="phone" placeholder="00 45 12 34 56 78" class="numeric"><br>

    <label for="website">Website</label><br>
    <input type="text" name="website" placeholder="www.example.com" id="website"><br>

    <label for="message">Message*</label><br id="message">
    <textarea name="message" class="required"></textarea>

</fieldset>
<fieldset id="button">

<button type="submit">>>&nbsp;&nbsp;&nbsp;Send</button>
<button type="reset">reset&nbsp;&nbsp;&nbsp;<<</button>

</fieldset>
</form>

</div><!-- /end #contact-form -->

</article><!-- Article 1 end -->
</section>

<?php include("includes/jquery.php");?>
<script type="text/javascript">
/*<![CDATA[*/
jQuery.noConflict();
jQuery(document).ready(function($){
    // when submit button is pressed
    $("#contact_messenbrinkeu").submit(function() {

        var pass = true;

        var errors = {
            required    : 'this field is required',
            email       : 'enter a valid email address',
            numeric     : 'enter a number without spaces, dots or commas',
            alpha       : 'this field accepts only letters &amp; spaces'
        };

        var tests = {
            email       : /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
            numeric     : /^[0-9]+$/,
            alpha       : /^[a-zA-Z ]+$/
        };

        // clear error messages
        $(".error").removeClass();
        $(".error-message").remove();

        function displayError(el, type) {
            $(el).parent().addClass("error").find('label').append('<span class=\"error-message\"> &#8211; ' + errors[type] + '</span>');
        }

        $('.required, .email, .numeric, .alpha').each(function(){
            var value       = $(this).val();
            var valueExists = value.length === 0 ? false : true;

            var required    = $(this).hasClass('required');
            var email       = $(this).hasClass('email');
            var numeric     = $(this).hasClass('numeric');
            var alpha       = $(this).hasClass('alpha');

            if (required && value.length===0) {
                displayError(this,'required');
                pass=false;
            }

            else if (email && valueExists && !tests.email.test(value)) {
                displayError(this,'email');
                pass=false;
            }

            else if (numeric && valueExists && !tests.numeric.test(value)) {
                displayError(this,'numeric');
                pass=false;
            }

            else if (alpha && valueExists && !tests.alpha.test(value)) {
                displayError(this,'alpha');
                pass=false;
            }
        });
        return pass;
    });
});
/*]]>*/
</script>
<?php
    ini_set("display_errors", "0");
    $post_data = filter_input_array( INPUT_POST );

    $name = $post_data["name"];
    $email = $post_data["email"];
    $phone = $post_data["phone"];
    $website = $post_data["website"];
    $message = $post_data["message"];



    # select data that needs validation
    $validate = array(
        'required'  => array($name,$email,$message),
        'validEmail'    => array($email),
        'validNumber'   => array($phone),
        'validAlpha'    => array($name)
    );
    $formcontent = "Name: $name \nE-Mail: $email \nPhone: $phone \nWebsite: $website \nMessage: $message \n";
    //*$formcontent = wordwrap($formcontent, 70, "\n", true);

    $recipient = "mail@test.com"; 
    $subject = "Testmail"; 

    /*$mailheader = "From: $email \r\n";**/

    $mailheader .= "Reply-To: $name <$email>\r\n"; 
    $mailheader .= "Return-Path: $name <$email>\r\n"; 
    $mailheader .= "Content-Type: text/plain\r\n"; 
    $mailheader .= "Organization: Sender Organization\r\n";
    $mailheader .= "MIME-Version: 1.0\r\n";
    $mailheader .= "Content-type: text/plain; charset=UTF-8\r\n";
    $mailheader .= "X-Priority: 3\r\n";
    $mailheader .= "X-Mailer: PHP". phpversion() ."\r\n";
    $mailheader .= "From: $name <$email>\r\n";  

    function sendMail() {
        global $formcontent, $recipient, $subject, $mailheader;
        mail($recipient, $subject, $formcontent, $mailheader);
    }

    # error messages
    $errorsMsgs = array(
        'required'  => 'Please fill out all required fields.',
        'validEmail'    => 'is an invalid email address.',
        'validNumber'   => 'is an invalid number.',
        'validAlpha'    => 'contains invalid characters. This field only accepts letters and spaces.'
    );

    $errorMarkup    = "<h1>We found a few errors :-(</h1><h2>Please fix these errors and try again</h2><ol>";
    $errorMarkupEnd = "</ol>";
    $successMarkup  = "<h1>Success!</h1><h2>Your form was sent successfully.</h2>";
    $backMarkup     = "<a href=\"" . $_SERVER['HTTP_REFERER'] . "\">Back to form</a>";

    # begin state
    $valid = true;

    # loop through fields of error types
    foreach ($validate as $type => $fields) {
        # loop through values of fields to be tested
        foreach ($fields as $value) {
            # throw error if value is required and not entered
            if ($type === 'required' && strlen($value) === 0) {
                $errorMarkup .= "<li>$errorsMsgs[$type]</li>";
                $valid = false;
                break;
            }
            else if (
                $type === 'validEmail'  && !filter_var($value, FILTER_VALIDATE_EMAIL) ||
                $type === 'validNumber' && !preg_match('/^[0-9 ]+$/', $value) ||
                $type === 'validAlpha'  && !preg_match('/^[a-zA-Z ]+$/', $value)
            ) {
                if (strlen($value) === 0) {break;} # skip check if value is not entered
                $errorMarkup .= "<li>\"$value\" $errorsMsgs[$type]</li>";
                $valid = false;
                continue;
            }
        }
    }

    function isUTF8($string){
    return (utf8_encode(utf8_decode($string)) == $string);
    }

    if ($valid) {
        //*isUTF8($subject);
        //*isUTF8($formcontent);
        sendMail();
        $body = $successMarkup . $backMarkup;
        $title = "Form sent";
    } else {
        $body = $errorMarkup . $errorMarkupEnd . $backMarkup;
        $title = "Form errors";
    }

$(文档).ready(函数(){
$(“#联系_messenbrinkeu”).ajaxForm(
函数(){
警报(“您的邮件已发送!”);
}
)
})
";
#开始状态
$valid=true;
#循环遍历错误类型的字段
foreach($validate as$type=>$fields){
#循环通过要测试的字段的值
foreach($value形式的字段){
#如果值是必需的且未输入,则抛出错误
如果($type=='required'&&strlen($value)==0){
$errorMarkup.=“
  • $errorsMsgs[$type]
  • ”; $valid=false; 打破 } 否则如果( $type==='validEmail'&&!filter\u var($value,filter\u VALIDATE\u EMAIL)|| $type=='validNumber'&&!preg_match('/^[0-9]+$/',$value)|| $type==='validAlpha'&&!preg_match('/^[a-zA-Z]+$/',$value) ) { 如果(strlen($value)==0){break;}#如果未输入值,则跳过检查 $errorMarkup.=“
  • \”$value\“$errorsMsgs[$type]
  • ”; $valid=false; 继续; } } } 函数isUTF8($string){ 返回(utf8_编码(utf8_解码($string))==$string); } 如果($有效){ //*isUTF8($subject); //*isUTF8($formcontent); sendMail(); $body=$successMarkup.$backMarkup; $title=“已发送表格”; }否则{ $body=$errorMarkup.$errorMarkupEnd.$backMarkup; $title=“表单错误”; }
    在这一点上,我面临着两个问题:

  • 如果在表单中输入无效字符,则不仅会返回具有无效值的字段的错误,还会返回所有字段的错误

  • 无论表单是否实际发送,都会出现一个弹出窗口,告诉您表单已成功发送,因此我显然需要将其置于验证之后


  • 在contact.php表单中,您将首先拥有与此类似的表单类型

    <form action="post.php" name="contactUs" onsubmit="return validateForm();"  method="post" >
    
    下面是它的函数

    function validate_required(field, alerttxt) 
    {
        if (field.value == null || field.value == "") 
        {
        alert(alerttxt);
            return false;
        }
        else 
        {
            return true;
        }
    }
    
    在if语句中,键入表单的名称,我的表单名为contactUs,我的联系人表单值的名称为name,因此这将检查名称是否有效

    在我的函数中,它检查它是否为null(empty)或“”,如果它为空,则与empty相同 给他们alerttxt,它在我的validate_required中定义为“必须提供有效的电子邮件”,这是在函数validate_required(字段,alerttxt)中设置的,字段是我表单的名称和我要验证的字段的名称,alerttxt如上所示,如果为空,则返回false,如果为空,则返回true

    if语句是

    if (false == validate_required)
    
    您已从表单返回结果,
    if false==validate_required
    ,如果
    validate_required
    也为false,则它们相等,并给出警告消息,如果
    validate_required
    为true,则它们不匹配,并且语句不为false,因此不需要验证,希望如此s帮助,通读javascript,你就会明白它的意思

    function validate_required(field, alerttxt) 
    {
        if (field.value == null || field.value == "") 
        {
        alert(alerttxt);
            return false;
        }
        else 
        {
            return true;
        }
    }
    
    if (false == validate_required)