<div id="form-wrapper">
<div id="form-wrap">
<span style="float: left">Записаться на обучение:</span>
<form style="float: left" id="mycontactform" method="post">
<input name="name" type="text" placeholder="Ваше имя" />
<input name="phone" type="text" placeholder="Телефон" />
<span id="form-button" onclick=" ga('send', 'event', 'click', 'sign_up'); yaCounter30659347.reachGoal('form_sign_up'); return true;">Записаться сейчас</span>
</form>
</div>
</div>
это код формы далее обработчик
<script>
$(document).ready(function(){
$('#container').css('margin-top','41px');
$('#form-button').click(function(){
var btnClicked = jQuery(this);
var formId = jQuery("#mycontactform");
jQuery(btnClicked).prop("disabled", true);
if($('input[name=phone]').val() != '' && $('input[name=name]').val() != '') {
$.post("/sendmail.php",
$("#mycontactform").serialize(),
function(response) {
$(this).attr('disabled', true);
$('#form-wrapper').html(response);
if (response == 'Заявка отправлена!') {
jQuery('#mycontactform').html('Ваша заявка отправлена! В течение 15 минут с Вами свяжется наш менеджер!');
} else {
jQuery(btnClicked).prop("disabled", false);
jQuery('#form-wrapper').slideDown().delay(5000).slideUp();
}
});
return false;
}
if ($('input[name=name]').val() == '')
$('input[name=name]').css('border', '1px solid red');
if ($('input[name=phone]').val() == '')
$('input[name=phone]').css('border', '1px solid red');
});
});
</script>
файл php "/sendmail.php"
`
$to = 'avtoshkola.perekrestok@mail.ru';
$subject = 'Заявка с сайта';
$message = 'Имя: ' . $name . '<br />Телефон: ' . $phone . '</BR>Заявка со страницы сайта' . $_SERVER["HTTP_REFERER"] . '</BR>';
$headers = 'From: info@perekrestok.at' . "\r\n";
//$mess = 'Заявка с сайта' . $_SERVER["HTTP_REFERER"] . '</BR>';
$headers .= "Content-type: text/html; charset=\"utf-8\"";
$data = array(
"STATUS_ID" => "15", "OPENED" => "Y", "ASSIGNED_BY_ID" => 324,
"TITLE" => 'perekrestok.at: ЗАПИСАТЬСЯ НА ОБУЧЕНИЕ',
"NAME" => $name,
"PHONE" => array(array("VALUE" => $phone, "VALUE_TYPE" => "WORK")),
"UF_CRM_1556619202" => $roistatVisitId,
);
$b24 = new WFB24($data);
if ( ($name != '') && ($phone != '')) { // this line checks that we have a valid email address
mail($to, $subject, $message, $headers,'-f info@perekrestok.at'); //This method sends the mail. $res = $b24->send(); echo " Ваша заявка отправлена! В течение 15 минут с Вами свяжется наш менеджер!"; // success message } else { echo "Пожалуйста, заполните корректно все поля!"; };
class WFB24
{
const CRM_LEAD_ADD = 'https://perekrestok.bitrix24.ru/rest/534/b75ppkhsaxkssarz/crm.lead.add.json';
public $queryData;
function __construct($queryData)
{
$this->queryData = $queryData;
}
function send($url = self::CRM_LEAD_ADD)
{
$postFields = http_build_query(array(
'fields' => $this->queryData,
'params' => array("REGISTER_SONET_EVENT" => "Y")
));
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_POSTFIELDS => $postFields,
));
$result = curl_exec($curl);
curl_close($curl);
$result = json_decode($result, 1);
return $result;
}
}`
Помогите отредактировать код чтобы сообщение приходила не больше ого штуки за раз
как мне кажется вариантов несколько (их можно дополнять):
Простые варианты:
1) Воспользоваться localStorage
. Отправили сообщение, изменили ключ (например isSend) в localStorage
. При повторной отправке с клиента проверяйте этот ключ.
localStorage.setItem('isSend', true);
localStorage.getItem('isSend'); // если не true - делайте отправку
Повторная отправка решается очисткой localStorage
, заходом с другого браузера или включением режима инкогнито - для простого юзера может и сойдет.
2) Присылать с сервера cookie
. Запрос прошел успешно, вернули cookie
. Или устанавливать cookie
прямо с клиента.
Решается отключением кук на сайте, заходом с другого браузера или включением режима инкогнито
Более сложные: (если такие варианты для вас возможны)
3) Давать отправлять только авторизованным пользователям = у вас будет идентификатор клиента и вы сможете ограничить количество запросов.
4) Отправка кода подтверждения на телефон и дальнейшая проверка кода = нужен сервис для отправки смс = скорее всего придется платить.
5) Ограничение количества запросов по IP адресу клиента = решается заменой IP например в браузере ТОР.
6) Ограничение количества запросов по номеру телефона клиента = любой человек сможет ввести не свой номер телефона.
Лучшим вариантом считаю пункты 3 и 4
P.S: еще есть куча вариантов, но 100% вариантов избежать повторную отправку скорее всего нет. Все зависит от уровня юзеров.
Можно при первом нажатии создать переменную i, которая изначально = 0. И добавить проверку на нажатие if(i=0){}else{i++;}
После чего выводить сообщение, мол уже отправлено.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как отправить txt (или любой другой) файл на сервер указывая правильный путь?
Хотелось бы увидеть, как возможно реализовать на css падение какого-то маленького объекта по касательной, ну или допустим падающую звезду...
Задание состоит в том, чтобы написать программу вывода графиков функции y(x) для аргумента x, изменяющегося от a до b с шагом h (вводится с клавиатуры)...