PHP联系表单与Jquery验证无法正常工作

时间:2015-06-29 12:19:40

标签: php jquery contact-form

问题是,无论我尝试什么都行不通。尝试了我自己的剧本,尝试了所有的东西,然后在谷歌上发现了一些并尝试了但没有,不知道缺少了什么,但它不起作用。 到目前为止,我最近的电子邮件是空的。这是最新版本。谁能告诉我缺少什么?

HTML

<div class="container-fluid">
                        <p id="returnmessage"></p>
                        <form action="sendEmail.php" id="contact_form" method="post">
                            <h2 style="font-size:14px;line-height:18px;font-weight:600;padding-bottom:0;">Bize Yazın</h2>
                            <ul class="contactform">
                                <li>
                                    <div id="name_error" class="error" style="color:#aa3939; font-size:8px; line-height:8px;"> <i class="fa fa-exclamation"></i> Lütfen adınızı giriniz.</div>
                                    <span class="contact-input-icon" style="text-align:left"><i class="fa fa-user"></i></span>
                                    <div class="input-field">
                                        <input type="text" style="border:1px solid rgba(220,220,220,0.5)" name="contactName" id="contactName" value="" class="required requiredField" placeholder="Ad Soyad"/>
                                    </div>
                                </li>
                                <li>
                                    <div id="email_error" class="error" style="color:#aa3939; font-size:8px; line-height:8px;"> <i class="fa fa-exclamation"></i> Lütfen eposta adresinizi giriniz.</div>
                                    <span class="contact-input-icon"><i class="fa fa-envelope"></i></span>
                                    <div class="input-field">
                                        <input type="email" style="border:1px solid rgba(220,220,220,0.5)" name="contactEmail" id="contactEmail" value="" class="required requiredField email" placeholder="Eposta"/>
                                    </div>
                                </li>
                                <li>
                                        <input type="text" style="border:1px solid rgba(220,220,220,0.5)" name="contactSubject" id="contactSubject" value="" class="hidden" placeholder=""/>
                                </li>
                                <li class="textarea">
                                    <div id="message_error" class="error" style="color:#aa3939; font-size:8px; line-height:8px;"> <i class="fa fa-exclamation"></i> Lütfen mesajınızı giriniz.</div>
                                    <span class="contact-input-icon"><i class="fa fa-pencil"></i></span>
                                    <div class="input-field">
                                        <textarea name="contactMessage" style="border:1px solid rgba(220,220,220,0.5)" id="contactMessage" rows="6" cols="20" class="required requiredField" placeholder="Mesajınız"></textarea>
                                    </div>
                                    <div id="mail_success" class="success" style="color:#00CC00"><i class="fa fa-check"></i> İlginiz için teşekkürler. En kısa sürede sizinle irtibata geçeceğiz.</div>
                                    <div id="mail_fail" class="error" style="color:#aa3939"><i class="fa fa-times"></i> Üzgünüz, mesajınız iletilemedi. Daha sonra lütfen tekrar deneyin.</div>
                                </li>
                                <li class="buttons">
                                    <div id="cf_submit_p">
                                    <input type="hidden" style="border:1px solid rgba(220,220,220,0.5)" name="submitted" id="submitted" value="true" />
                                    <button type="submit" style="border:1px solid #3f97cf" class="button" id="send_message"><i class="fa fa-paper-plane-o" style="font-size:20px;color:#3f97cf"></i></button>
                                    </div>
                                </li>
                            </ul>
                        </form>
                    </div> <!--end container-fluid-->
                </div><!-- #contact-canvas -->

JS验证

<script type="text/javascript">
    $(document).ready(function(){
        $('#send_message').on('submit',function(e){
            e.preventDefault();
            var error = false;
            var name = $('#contactName').val();
            var email = $('#contactEmail').val();
            var subject = $('#contactSubject').val();
            var message = $('#contactMessage').val();
            if(name.length == 0){
                var error = true;
                $('#name_error').fadeIn(500);
            } else {
                $('#name_error').fadeOut(500);
            }
            if(email.length == 0 || email.indexOf('@') == '-1'){
                error = true;
                $('#email_error').fadeIn(500);
            } else {
                $('#email_error').fadeOut(500);
            }
            if(message.length == 0){
                error = true;
                $('#message_error').fadeIn(500);
            } else {
                $('#message_error').fadeOut(500);
            } if(error == false){
                $('#cf_submit_p').attr({'disabled' : 'true', 'value' : 'Gönderiliyor...' });
                $.post("send_email.php", $("#contact_form").serialize(),function(result){
                    if(result == 'sent'){
                        $('#cf_submit_p').remove();
                        $('#mail_success').fadeIn(500);
                    } else {
                        $('#mail_fail').fadeIn(500);
                        $('#cf_submit_p').removeAttr('disabled').attr('value', 'Gönder');
                    }
                });
            }
            return false;
        });
    });
</script>

和PHP

<?php



//Değiştir. Site admini eposta adresi. 

$akaEmail = 'kreaft@outlook.com';





if($_POST) {



   $name = trim(stripslashes($_POST['contactName']));

   $email = trim(stripslashes($_POST['contactEmail']));

   $subject = trim(stripslashes($_POST['contactSubject']));

   $contact_message = trim(stripslashes($_POST['contactMessage']));



   // İsim doğrulama

    if (strlen($name) < 2) {

        $error['name'] = "Lütfen adınızı girin.";

    }

    // Email doğrulama

    if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {

        $error['email'] = "Lütfen geçerli bir eposta adresi girin.";

    }

    // Mesaj doğrulama

    if (strlen($contact_message) < 15) {

        $error['message'] = "Lütfen mesajınızı girin. (Min. 15 karakter)";

    }

   // Konu

    if ($subject == '') { $subject = "Site İletişim Formu"; }





   // Mesajı oluşturuyoruz

   $message .= "Gönd.: " . $name . "<br />";

   $message .= "Eposta: " . $email . "<br />";

   $message .= "Mesaj: <br />";

   $message .= $contact_message;

   $message .= "<br /> ----- <br /> Bu eposta site iletişim formu üzerinden gönderilmiştir. <br />";



   // Başlıkları oluşturuyoruz

   $from =  $name . " <" . $email . ">";



   // Başlıklar

    $headers = "From: " . $from . "\r\n";

    $headers .= "Reply-To: ". $email . "\r\n";

    $headers .= "MIME-Version: 1.0\r\n";

    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";





   if (!$error) {



      ini_set("sendmail_from", $akaEmail); // windows server için

      $mail = mail($akaEmail, $subject, $message, $headers);



        if ($mail) { echo "OK"; }

      else { echo "Bir hata oluştu. Lütfen tekrar deneyin."; }



    } # hiç bir doğrulama hatası çıkmazsa bitir, çıkarsa hataları listeliyoruz.



    else {



        $response = (isset($error['name'])) ? $error['name'] . "<br /> \n" : null;

        $response .= (isset($error['email'])) ? $error['email'] . "<br /> \n" : null;

        $response .= (isset($error['message'])) ? $error['message'] . "<br />" : null;



        echo $response;



    } # bir doğrulama hatası olmuşsa burada bitir.



}



?>

2 个答案:

答案 0 :(得分:1)

  

注意:未定义的变量:第61行的/Users/kobigo/Sites/yedikitamuhendislik.com/sendEmail.php中的消息

看看第61行:

$message .= "Gönd.: " . $name . "<br />";

您尝试追加到$message,但您从未在第一时间对其进行定义。您可以在定义之后附加,但在第一行,您需要简单地定义它并分配给它:

$message = "Gönd.: " . $name . "<br />";

其余类似的行可以附加到它上面。

您还在JavaScript代码中附加了错误的事件:

$('#send_message').on('submit',function(e){

#send_message是一个按钮,而不是表单。它没有submit事件。改为附加到表单:

$('#contact_form').on('submit',function(e){

答案 1 :(得分:0)

您尝试在第61行附加.变量而不先将其初始化。通过删除附加符号 $message = "Gönd.: " . $name . "<br />";

来修复第61行
 $message = "";

或者首先初始化变量,如:

{{1}}