Контактная форма отправляет пустые письма

1

Моя контактная форма не включает сообщения и другую информацию в сообщениях электронной почты.

Есть "Неизвестный отправитель" и "Без темы". Email содержит мои теги (from :, subject :, message :), но после них не записывается контент.

Я попробовал несколько других скриптов, но они дали тот же результат.

Мой JS-код

(function($){
$(document).ready(function() {
    $('#submit-form').click(function(e){

        e.preventDefault();
        var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
        var name  = $('#rp_name').val(),
            email  = $('#rp_email').val(),
            subject  = $('#rp_subject').val(),
            message  = $('#rp_message').val(),
            data_html,
            success = $('#success');

        if(name === ""){
            $('#rp_name').val('Please enter your name.');
        }

        if(subject === ""){
            $('#rp_subject').val('Please enter your name.');
        }

        if(email === ""){
            $('#rp_email').val('Your email is required.');
        }else if(reg.test(email) === false){
            $('#rp_email').val('Invalid Email Address.');
        }

        if(message === ""){
            $('#rp_message').val('Message is required.');
        }

        if(message !== "" && name !== "" && reg.test(email) !== false) {
            data_html = "name=" + name + "&email="+ email + "&message=" + message + "&subject="+ subject;

            alert(data_html);
            $.ajax({
                type: 'POST',
                url: 'php_helpers/contact_form.php',
                data: data_html,
                success: function(msg){

                    if (msg == 'sent'){
                        success.html('<div class="alert alert-success">Message <strong>successfully</strong> sent!</div>')  ;
                        $('#rp_name').val('');
                        $('#rp_email').val('');
                        $('#rp_message').val('');
                    }else{
                        success.html('<div class="alert alert-error">Message <strong>not</strong> sent! Please Try Again!</div>')  ; 
                    }
                }
            });

        }
        return false;
    });
});
})(jQuery);

Мой PHP-код

<?php

$to = 'email'; // I changed it 

$subject = $_POST['subject'];

if($to) {
$name = $_POST['name'];
$email = $_POST['email'];

$fields = array(
    0 => array(
        'text' => 'Imie',
        'val' => $_POST['name']
    ),
    1 => array(
        'text' => 'Email',
        'val' => $_POST['email']
    ),
    2 => array(
        'text' => 'WIADOMOSC',
        'val' => $_POST['message']
    )
);

$message = "";

foreach($fields as $field) {
    $message .= $field['text'].": " . htmlspecialchars($field['val'], ENT_QUOTES) . "<br>\n";
}

$$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From: '. $email . "\r\n" . 'X-Mailer: PHP/' . phpversion();


mail($to, $subject, $message, $headers);

if ($message){
echo 'sent';
}else{
echo 'failed';
}
} else {
echo "Don't access this file directly"; 
}
?>

Я буду рад за любые намеки.

  • 0
    Вы уверены, что получаете значения на странице PHP?
  • 0
    Спасибо за подсказку. В файле .htaccess было правило перезаписи для файлов .php, которое вызывало проблемы с пост-запросом ajax. Решаемые.
Теги:
email

4 ответа

0

Спасибо за все ваши ответы. Наконец, мне удалось найти решение. Я раньше не использовал firebug, но благодаря этому я смог найти сообщение об ошибке. Теперь скрипт работает нормально.

Это не было в коде, но в.htaccess переписывать правило для.php файлов, которое вызывало ошибку 301 для запроса ajax (../contact вместо.. /contact.php).

У меня есть одна.php-страница (загрузчик файлов), и я подумал, что добавление другого правила для дружественных ссылок для этого было бы хорошей идеей.

0

Вы используете два символа доллара в строке: $$ headers = 'MIME-Version: 1.0'. "\ Г\п";
Удалите "$" и повторите попытку.

  • 0
    Я исправил это, но это было не так.
  • 0
    Я. firebug - отличный инструмент для отладки ошибок JavaScript.
0

Там, где я проверяю ваш код файла contact.php, все в порядке. Но вам нужно одно, если использовать firefox. пожалуйста, утешите свой код. Я имею в виду, когда вы открываете firebug, будет одна консоль настроек. с помощью которого вы можете проверить, будет ли ваша ценность наряду с переменной, или они пусты.

Я думаю, что ваша ценность не будет в PHP файле. используйте консоль, и вы можете легко исправить свою ценность.

Надеюсь, это имеет смысл для вас.

  • 0
    Сегодня я впервые использовал Firebug, и это дало мне подсказку, в которой я нуждался, спасибо!
  • 0
    Добро пожаловать...............
0

Проверьте, получает ли ваш php-скрипт имя, адрес электронной почты и сообщение. Вы можете проверить это, используя

var_dump($_POST);

Если сервер не получает эти переменные, попробуйте отправить data_html в качестве объекта: change

data: data_html,

в

data: {name: name, email: email, message: message}

Я не тестировал его, но я всегда использую этот способ отправки данных с js на сервер.

  • 0
    Я написал код таким образом, что теперь он более читабелен, спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню