Перейти к содержимому



2 письма в обратной связи на php

#1

Поделиться сообщением #1



Info-Mans

Info-Mans
  • Пользователь
  • 1 209 сообщений
  • Репутация: 123
0

Отправлено 08 Июль 2015 - 23:02

Всем доброго дня.

 

Вообщем такая проблема: на странице 2 одинаковые формы обратной связи, которые ведут на скрипт отправки сообщения на почту. Но при заполнении одной любой формы, при отправке приходит 2 сообщения, одно с данными, а другое пустое.

 

Вот php код

$sendto = "test@mail.ru"; // почта, на которую будет приходить письмо
$username = $_POST['name']; // сохраняем в переменную данные полученные из поля c именем
$usertel = $_POST['phone']; // сохраняем в переменную данные полученные из поля c телефонным номером
$usermail = "test@mail.ru"; // сохраняем в переменную данные полученные из поля c адресом электронной почты

// Формирование заголовка письма
$subject = "Пилка SCHOLL VELVET SMOOTH";
$headers = "From: " . strip_tags($usermail) . "\r\n";
$headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";

// Формирование тела письма
$msg = "<html><body style='font-family:Arial,sans-serif;'>";
$msg .= "<p style='font-size:20px;'><strong>От кого:</strong> ".$username."</p>\r\n";
$msg .= "<p style='font-size:20px;'><strong>Номер телефона:</strong> ".$usertel."</p>\r\n";
$msg .= "</body></html>";

// отправка сообщения
if(@mail($sendto, $subject, $msg, $headers)) {
echo "<div class='mail'><p>Спасибо за проявленное доверие! <br> Время работы call-центра с 9-00 до 21-00 ПН-ВС. Если вы оставили заявку в нерабочее время менеджер свяжется с вами завтра. <br> Ожидайте нашего звонка!</p></div>";
} else {
echo "<div class='mail'><p>Письмо не отправлено! Повторите попытку заного! Или сообщите об ошибке по телефону</p></div>";
}

Подскажите в чем ошибка? Почему приходит 2 письма?

 

 

 

  • 0

»»» Начни изменять свою жизнь с внешнего вида «««
        Буду рад вашим комментариям на блоге!



robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Форма обратной связи
  2. Скрипт не отправляет письмо на почту
  3. Как сделать форму обратной связи на сайте
  4. PHP обработчик формы обратной связи
  5. Спам через форму обратной связи на сайте

#2

Поделиться сообщением #2



Ixman

Ixman
  • Пользователь PRO
  • 2 520 сообщений
  • Репутация: 590

Отправлено 09 Июль 2015 - 10:00

@Info-Mans, а зачем две формы?


  • 0


#3

Поделиться сообщением #3



miketomlin

miketomlin
  • Пользователь
  • 282 сообщений
  • Репутация: 43

Отправлено 09 Июль 2015 - 10:49

на странице 2 одинаковые формы обратной связи
Возможно, каким-то образом активируются обработчики обеих форм. Еще иногда бывают случаи, когда в рамках одной формы одновременно активируются обычный обработчик и AJAX-обработчик, но это видимо не ваш случай, если конечно при отправке через AJAX у вас не происходит очистки полей формы.
  • 0

#4

Поделиться сообщением #4



Info-Mans

Info-Mans
    Topic Starter
  • Пользователь
  • 1 209 сообщений
  • Репутация: 123

Отправлено 09 Июль 2015 - 11:09

@Info-Mans, а зачем две формы?

Это на однастраничнике) одна вверху другая внизу
  • 0

»»» Начни изменять свою жизнь с внешнего вида «««
        Буду рад вашим комментариям на блоге!



#5

Поделиться сообщением #5



Ixman

Ixman
  • Пользователь PRO
  • 2 520 сообщений
  • Репутация: 590

Отправлено 09 Июль 2015 - 11:30

@Info-Mans, в коде, который выше, нет ничего такого, чтобы отправляло два раза. Нужно смотреть саму реализацию отправки формы, всего скорее сбой происходит там.


  • 0


#6

Поделиться сообщением #6



Info-Mans

Info-Mans
    Topic Starter
  • Пользователь
  • 1 209 сообщений
  • Репутация: 123

Отправлено 09 Июль 2015 - 18:51

Вот такие 2 кода формы на странице

<div class="form">
			<form action="mail.php" method="POST" class="order" id="formorder">
				<div class="inp_block">
					<input type="text" onfocus="if(this.value=='Введите Ваше Имя') this.value='';" onblur="if(this.value=='') this.value='Введите Ваше Имя';" value="Введите Ваше Имя" name="name" class="inp_text" id="nameorder">
				</div>
				<div class="inp_block">
					<input type="text" onfocus="if(this.value=='Введите Ваш Телефон') this.value='';" onblur="if(this.value=='') this.value='Введите Ваш Телефон';" value="Введите Ваш Телефон" name="phone" class="inp_text" id="phoneorder">
				</div>
				<button class="send_order" id="sendorder" onclick="yaCounter31291843.reachGoal('sendorder'); return true;">Купить со СКИДКОЙ!</button>
			</form>
		</div>

  • 0

»»» Начни изменять свою жизнь с внешнего вида «««
        Буду рад вашим комментариям на блоге!



#7

Поделиться сообщением #7



Ixman

Ixman
  • Пользователь PRO
  • 2 520 сообщений
  • Репутация: 590

Отправлено 09 Июль 2015 - 19:34

@Info-Mans, адрес страницы если можно, так только пальцем в небо тыкать. Можно в личку отправить, я уже посмотрю работу скрипта в живую


  • 1


#8

Поделиться сообщением #8



Info-Mans

Info-Mans
    Topic Starter
  • Пользователь
  • 1 209 сообщений
  • Репутация: 123

Отправлено 09 Июль 2015 - 21:30

@Ixman, Могу и сюда))) http://rs2-shop.ru/


  • 0

»»» Начни изменять свою жизнь с внешнего вида «««
        Буду рад вашим комментариям на блоге!



#9

Поделиться сообщением #9



Ixman

Ixman
  • Пользователь PRO
  • 2 520 сообщений
  • Репутация: 590

Отправлено 10 Июль 2015 - 13:02

@Info-Mans, ну тогда я буду вводить данные в форму, не нужно обращать на них внимание, в поле тел будут ноли, чтоб не спутать )

По заголовкам всё отлично работает, повтора данных не заметил.

 

Кстати сейчас по гуглил, и нашёл одной из причин может быть яндекс метрика, она загружает страницу повторно, всего скорее из-за этого идёт отправка пустого письма. Могу только предложить проверку на наличие POST данных. как-то так:

if (!empty($_POST)) {
$sendto = "test@mail.ru"; // почта, на которую будет приходить письмо
$username = $_POST['name']; // сохраняем в переменную данные полученные из поля c именем
$usertel = $_POST['phone']; // сохраняем в переменную данные полученные из поля c телефонным номером
$usermail = "test@mail.ru"; // сохраняем в переменную данные полученные из поля c адресом электронной почты

// Формирование заголовка письма
$subject = "Пилка SCHOLL VELVET SMOOTH";
$headers = "From: " . strip_tags($usermail) . "\r\n";
$headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";

// Формирование тела письма
$msg = "<html><body style='font-family:Arial,sans-serif;'>";
$msg .= "<p style='font-size:20px;'><strong>От кого:</strong> ".$username."</p>\r\n";
$msg .= "<p style='font-size:20px;'><strong>Номер телефона:</strong> ".$usertel."</p>\r\n";
$msg .= "</body></html>";

// отправка сообщения
if(@mail($sendto, $subject, $msg, $headers)) {
echo "<div class='mail'><p>Спасибо за проявленное доверие! <br> Время работы call-центра с 9-00 до 21-00 ПН-ВС. Если вы оставили заявку в нерабочее время менеджер свяжется с вами завтра. <br> Ожидайте нашего звонка!</p></div>";
} else {
echo "<div class='mail'><p>Письмо не отправлено! Повторите попытку заного! Или сообщите об ошибке по телефону</p></div>";
}
}

  • 0


#10

Поделиться сообщением #10



Info-Mans

Info-Mans
    Topic Starter
  • Пользователь
  • 1 209 сообщений
  • Репутация: 123

Отправлено 16 Июль 2015 - 00:55

@Ixman, спасибо помогло))) 


  • 0

»»» Начни изменять свою жизнь с внешнего вида «««
        Буду рад вашим комментариям на блоге!



robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru