Получатели формы почты PHP, получающие несколько копий - PullRequest
0 голосов
/ 27 января 2012

У меня есть настроенная почтовая форма PHP, которая использует AJAX и jQuery для проверки и отправки формы.Кажется, все работает нормально, но по какой-то причине мой клиент (владелец сайта) получает несколько копий каждой отправки почты.Количество копий варьируется от 1 до 10 копий каждого сообщения без конкретного шаблона.

Во всех проведенных мною тестах я лично получаю только 1 копию сообщения на свой рабочий электронный адрес и по адресудругая учетная запись Gmail, а также.Тем не менее, клиент, регистратор домена которого размещает свои учетные записи электронной почты, получает в любом месте до 10 копий одновременно.

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

Это сводит меня с ума.Мы не тратим часы на то, чтобы понять это, и теряем деньги, тратя каждую минуту на решение этой проблемы.

Я предоставлю вам свой код и действующий веб-сайт.Надеюсь, кто-нибудь может мне помочь !!


Прежде всего, вот сайт, где вы можете увидеть форму в действии: http://www.energywisesolutions.ca/

Вы можете нажать любуюСсылка / кнопка 'Заказать оценку дома', чтобы увидеть открытый слайд формы.


Этот скрипт я использую для проверки формы: http://www.position -relative.net / creation /formValidator /


Вот моя проверка правильности формы, а затем скрипт отправки формы:

$(document).ready(function() {

/* ASSESSMENT FORM
----------------------------------------------------------------*/

// Form Validation
$("#contact-form .send").click(function(){
    $("#contact-form").validationEngine('attach', {
        onValidationComplete: function(form, status){
            if(status==true){
                $("#contact-form .send").clone().insertAfter($(this)).attr("disabled","true");
            $("#contact-form .send").hide();
                _gaq.push(['_trackPageview', '/online-thankyou']);
                $.post('/themes/energywise/mail-form/process.php', $("#contact-form").serialize(), function(data) {
                    // Add Thank You Message
                    $('#thank-you-message').html(data);
                    // Create IFRAME to page with Adwords Tracking Script
                    function ppcconversion() {
                        var iframe = document.createElement('iframe');
                        iframe.style.width = '0px';
                        iframe.style.height = '0px';
                        document.body.appendChild(iframe);
                        iframe.src = 'http://www.energywisesolutions.ca/themes/energywise/mail-form/conversion-script.php';
                    };
                    ppcconversion();

                });
            }
        }
    });
});

});

А вот мой скрипт процесса обработки формы:

$toAdmin='info@energywisesolutions.ca';
$fromAdmin='info@energywisesolutions.ca';
$toVisitor=stripslashes($_POST['email']);

$name=stripslashes($_POST['full_name']);
$city=stripslashes($_POST['city']);
$phone=stripslashes($_POST['phone']);
$comments=stripslashes($_POST['comments']);

/* TO ADMIN */
$headersToAdmin = "From: " .$toVisitor. "\r\n";
$headersToAdmin .= "Content-type: text/html; charset=iso-8859-1\r\n";

$subjectToAdmin='Energywise Website Lead - Home Assessment Form';

$messageToAdmin = '<html><body>';
$messageToAdmin .= '<img src="http://www.energywisesolutions.ca/energy-rebates/form1.jpg" alt="Home Assessment Form" />';
$messageToAdmin .= '<p>A website visitor has filled out thea Home Assessment Form. Here is their information and the comments they provided:</p>';
$messageToAdmin .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
$messageToAdmin .= "<tr style='background: #eee;'><td><strong>Sent From:</strong> </td><td>ENERGYWISE WEBSITE</td></tr>";
$messageToAdmin .= "<tr><td><strong>Name:</strong> </td><td>" .$name. "</td></tr>";
$messageToAdmin .= "<tr><td><strong>City:</strong> </td><td>" .$city. "</td></tr>";
$messageToAdmin .= "<tr><td><strong>Email:</strong> </td><td>" .$toVisitor. "</td></tr>";
$messageToAdmin .= "<tr><td><strong>Phone:</strong> </td><td>" .$phone. "</td></tr>";
$messageToAdmin .= "<tr><td><strong>Comments:</strong> </td><td>" .$comments. "</td></tr>";
$messageToAdmin .= "</table>";
$messageToAdmin .= "</body></html>";


/* TO VISITOR */
$headersToVisitor = "From: " .$fromAdmin. "\r\n";
$headersToVisitor .= "Content-type: text/html; charset=iso-8859-1\r\n";

$subjectToVisitor='Thank you for Contacting Energywise Solutions';

$messageToVisitor = '<html><body>';
$messageToVisitor .= '<img src="http://www.energywisesolutions.ca/energy-rebates/form1.jpg" alt="Home Assessment Form" />';
$messageToVisitor .= '<p>Hello,</p> 
                            <p>Thank you for contacting Energywise Solutions. We have received your message and will get in touch with you shortly.</p> 
                            <p>Your information has been attached below:</p>';
$messageToVisitor .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
$messageToVisitor .= "<tr style='background: #eee;'><td><strong>Name:</strong> </td><td>" .$name. "</td></tr>";
$messageToVisitor .= "<tr><td><strong>City:</strong> </td><td>" .$city. "</td></tr>";
$messageToVisitor .= "<tr><td><strong>Email:</strong> </td><td>" .$toVisitor. "</td></tr>";
$messageToVisitor .= "<tr><td><strong>Phone:</strong> </td><td>" .$phone. "</td></tr>";
$messageToVisitor .= "<tr><td><strong>Comments:</strong> </td><td>" .$comments. "</td></tr>";
$messageToVisitor .= "</table>";
$messageToVisitor .= "</body></html>";


mail($toAdmin, $subjectToAdmin, $messageToAdmin, $headersToAdmin);
mail($toVisitor, $subjectToVisitor, $messageToVisitor, $headersToVisitor);

print "<h3><strong>Thank you for contacting us.</strong> We will get back to you as soon as possible.</h3> 
<p>We have received your message and will get in touch with you shortly. If you have any immediate questions please feel free to give us a call. You can find the appropriate contact information for your region on our <a href='/locations/'>locations</a> page.</p>";

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

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 27 января 2012

Старайтесь не присоединять вызов $("#contact-form").validationEngine('attach', {...}); к событию click кнопки отправки (т. Е. Вызывать его непосредственно в $(document).ready(...);).

Похоже, что вызов validationEngine('attach', {...}) подключает обработчикк событию submit формы, поэтому этот обработчик присоединяется один раз при каждом нажатии пользователем кнопки отправки.

0 голосов
/ 27 января 2012

Попробуйте переключить сценарий обработки формы на что-то вроде этого, ваша проблема в том, что каждый раз, когда у вас есть $ messageToVisito, я думаю, что электронное письмо отправляет, поэтому конкатенация вашего сценария поможет и сделает его чище.

0 голосов
/ 27 января 2012

Вы пытались связать событие отправки формы вместо кнопки?

$('yourformselector').submit(function(e) {
  e.preventDefault();
  // The rest of your validation script
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...