@MrFlatman
Студент

Не работает форма обратной связи, в чем ошибка?

Есть форма
<div class="row">
                        <div class="col-md-8 col-md-offset-2">
                            
                            <form class="form contact-form" id="contact_form" action="/mail.php" method="post">
                                <div class="clearfix">
                                    
                                    <div class="cf-left-col">
                                        
                                        <!-- Name -->
                                        <div class="form-group">
                                            <input type="text" name="name" id="name" class="input-md round form-control" placeholder="Имя" required>
                                        </div>
                                        
                                        <!-- Email -->
                                        <div class="form-group">
                                            <input type="text" name="number" id="number" class="input-md round form-control" placeholder="Номер телефона" required>
                                        </div>
                                        
                                    </div>
                                    
                                    <div class="cf-right-col">
                                        
                                        <!-- Message -->
                                        <div class="form-group">                                            
                                            <textarea name="message" id="message" class="input-md round form-control" style="height: 84px;" placeholder="Сообщение"></textarea>
                                        </div>
                                        
                                    </div>
                                    
                                </div>
                                
                                <div class="clearfix">
                                    
                                    <div class="cf-left-col">
                                        
                                        <!-- Inform Tip -->                                        
                                        <div class="form-tip pt-20">
                                            <i class="fa fa-info-circle"></i> Все поля обязательны для заполнения
                                        </div>
                                        
                                    </div>
                                    
                                    <div class="cf-right-col">
                                        
                                        <!-- Send Button -->
                                        <div class="align-right pt-10">
                                            <input class="submit_btn btn btn-mod btn-medium btn-round" id="submit1" name="submit1" value="Отправить заявку" type="submit">
                                        </div>
                                        
                                    </div>
                                    
                                </div>
                                
                                
                                
                                <div id="result"></div>
                            </form>
                            
                        </div>
                    </div>


JS

/* ---------------------------------------------
 Contact form
 --------------------------------------------- */
$(document).ready(function(){
    $("#submit_btn").click(function(){
        
        //get input field values
        var user_name = $('input[name=name]').val();
        var user_email = $('input[name=email]').val();
        var user_message = $('textarea[name=message]').val();
        
        //simple validation at client's end
        //we simply change border color to red if empty field using .css()
        var proceed = true;
        if (user_name == "") {
            $('input[name=name]').css('border-color', '#e41919');
            proceed = false;
        }
        if (user_email == "") {
            $('input[name=email]').css('border-color', '#e41919');
            proceed = false;
        }
        
        if (user_message == "") {
            $('textarea[name=message]').css('border-color', '#e41919');
            proceed = false;
        }
        
        //everything looks good! proceed...
        if (proceed) {
            //data to be sent to server
            post_data = {
                'userName': user_name,
                'userEmail': user_email,
                'userMessage': user_message
            };
            
            //Ajax post data to server
            $.post('/mail.php', post_data, function(response){
            
                //load json data from server and output message     
                if (response.type == 'error') {
                    output = '<div class="error">' + response.text + '</div>';
                }
                else {
                
                    output = '<div class="success">' + response.text + '</div>';
                    
                    //reset values in all input fields
                    $('#contact_form input').val('');
                    $('#contact_form textarea').val('');
                }
                
                $("#result").hide().html(output).slideDown();
            }, 'json');
            
        }
        
        return false;
    });
    
    //reset previously set border colors and hide all message on .keyup()
    $("#contact_form input, #contact_form textarea").keyup(function(){
        $("#contact_form input, #contact_form textarea").css('border-color', '');
        $("#result").slideUp();
    });
    
});


и сам пхп

<?php
if (!empty($_POST['name']) AND !empty($_POST['number']) AND !empty($POST['message'])){
    $headers = 'From: Пермь ул. Героев Хасана 55-а\r\n'.
                'Reply-to:artyukhov.valery@gmail.com'. 
                'X-Mailer: PHP/'. phpversion();
    $theme = 'Новая заявка с сайта';
    $latter = "Данные заявки:\r\n";
    $latter .=  'Имя клиента:'.$_POST['name'].' \r\n';
    $latter .=  'Номер телефона клиента:'.$_POST['number'].' \r\n';
    $latter .=  'Сообщение клиента:'.$_POST['message'].' \r\n';
   if(mail('artyukhov.valery@gmail.com', $theme, $latter)){
    header('Location:/er.php');
   } else {
    header('Location:/');
   }
} else {
    header('Location:/');
}

?>


Но при отправке ничего не происходит, в чем может быть причина?
  • Вопрос задан
  • 286 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
1) Проверить консоль браузера на ошибки в скриптах
2) Проверить лог сервера на ошибки в обработке
3) $("#submit_btn").click(function(){ не имеет передаваемого евента и не запрещает действие по умолчанию, скорее всего форма тупо субмитится, ретурн фалс не всегда срабатывает. Кроме того действие правильнее делать по субмиту формы, я легко могу нажать ентер в любом поле формы и никакой валидации не будет, все уйдет как есть.
4) header('Location:/'); при аякс запросе не может сработать, так как заголовок отсылается обратно скрипту, который чхать хотел на заголовки с редиректом.
5) mail() не гарантирует отправку, как и не может обработать ошибки отправки.
6) Хеадеры для письма а) не содержат \n во второй строке, б) все равно не передаются в мэйл.
7) $latter - это $letter? Обычно пишут $body, так как и заголовок и все содержимое - это письмо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы