Jump to content
  • 0

На почту не приходят письма с заявками отправленные через лендинг


it-seo77
 Share

Question

Всем привет, не могу разобраться почему на почту с лендинга не приходят заявки.
Есть файл script.js в нём есть такая часть содержимого.

function clearForm () {
                $(this).removeClass('valid-for-file-upload');
                $('input:not(":checkbox"), textarea, select').val('');
                $('.form-group').removeClass('has-success').removeClass('has-error');
                formtype = '';
            };
            $thisText = $(this).text();
            $thisBtn.addClass('disabled').text('Отправка...')
 
            $.ajax({ //отправляем аяксом
                url:'php/mail.php',
                type:'POST',
                data:'jsonData=' + $.toJSON(formData),
                success: function() {
                    $('.submit-form-loading').fadeOut();
                    $('.submit-form-error').fadeOut();
                    magnificPopup.close();
                    setTimeout(function() {
                        $('.thank-you-btn').magnificPopup({
                            type: 'ajax',
                            removalDelay: 500, 
                            ajax: {
                              settings: null,
                              cursor: 'mfp-ajax-cur',
                              tError: '<a href="%url%">Контент</a> не может быть загружен.',
                            },
                            callbacks: {
                                beforeOpen: function() {
                                   this.st.mainClass = 'mfp-zoom-in';
                                },
                            },
                            midClick: true
                        }).magnificPopup('open');
                    }, 501);
                    $thisBtn.removeClass('disabled').text($thisText);
                    clearForm ();
                    reachGoalFunc(yaTarget);
                    reachGoalFunc(obwee_koli4estvo);
 
                },
                error: function() {
                    alert('При отправке данных произошла ошибка, попробуйте снова.');
                    $thisBtn.removeClass('disabled').text($thisText);
                    clearForm ();
                }
            }); 
        }
    });
});

В файле index.php следующая часть кода:

<div class="buy-one-click">
        <div class="container">
            <div class="section-title">
                <h3>Продайте всего за 1 клик!</h3>
            </div>
            <a href="modal-service1.html" class="ajax-popup-link btn btn-success" style="text-transform: none; padding: 20px 20px 20px 40px; width:300px; margin:10px auto 0; display:block; line-height: 0.8;position:relative; font-size:22px;"><img src="img/arrow-right.png" style="position:absolute; top:21px;left:53px;">Оставить
                заявку</a>
 
        </div>

И третий файл mail.php

<?php
    if (isset($_POST['notEmpty'])) {$name = $_POST['notEmpty'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['formData'])) {$formData = $_POST['formData'];}
 
    $to = "online@yandex.ru"; /*Укажите адрес, га который должно приходить письмо*/
    $sendfrom   = "online@yandex.ru"; /*Укажите адрес, с которого будет приходить письмо, можно не настоящий, нужно для формирования заголовка письма*/
    $headers  = "From: " . strip_tags($sendfrom) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    $subject = "Новая заявка";
    $message = "$formData<br> <b>Имя пославшего:</b> $name <br><b>Телефон:</b> $phone<br>";
    $send = mail ($to, $subject, $message, $headers);
?>

Где тут могут быть ошибки?

Link to comment
Share on other sites

Recommended Posts

  • 0

modal-service1.html содержимое где?

UPD: части скрипта то зачем выкладывать?) Тут вроде нет экстрасенсов) Описывайте, какие ошибки выкидывает аякс, формы, и т.п.

Edited by BrusSENS
Link to comment
Share on other sites

  • 0

Пардон

/*! jQuery JSON plugin v2.5.1 | github.com/Krinkle/jquery-json */
!function($){"use strict";var escape=/["\\\x00-\x1f\x7f-\x9f]/g,meta={"\b":"\\b","	":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},hasOwn=Object.prototype.hasOwnProperty;$.toJSON="object"==typeof JSON&&JSON.stringify?JSON.stringify:function(a){if(null===a)return"null";var b,c,d,e,f=$.type(a);if("undefined"===f)return void 0;if("number"===f||"boolean"===f)return String(a);if("string"===f)return $.quoteString(a);if("function"==typeof a.toJSON)return $.toJSON(a.toJSON());if("date"===f){var g=a.getUTCMonth()+1,h=a.getUTCDate(),i=a.getUTCFullYear(),j=a.getUTCHours(),k=a.getUTCMinutes(),l=a.getUTCSeconds(),m=a.getUTCMilliseconds();return 10>g&&(g="0"+g),10>h&&(h="0"+h),10>j&&(j="0"+j),10>k&&(k="0"+k),10>l&&(l="0"+l),100>m&&(m="0"+m),10>m&&(m="0"+m),'"'+i+"-"+g+"-"+h+"T"+j+":"+k+":"+l+"."+m+'Z"'}if(b=[],$.isArray(a)){for(c=0;c<a.length;c++)b.push($.toJSON(a[c])||"null");return"["+b.join(",")+"]"}if("object"==typeof a){for(c in a)if(hasOwn.call(a,c)){if(f=typeof c,"number"===f)d='"'+c+'"';else{if("string"!==f)continue;d=$.quoteString(c)}f=typeof a[c],"function"!==f&&"undefined"!==f&&(e=$.toJSON(a[c]),b.push(d+":"+e))}return"{"+b.join(",")+"}"}},$.evalJSON="object"==typeof JSON&&JSON.parse?JSON.parse:function(str){return eval("("+str+")")},$.secureEvalJSON="object"==typeof JSON&&JSON.parse?JSON.parse:function(str){var filtered=str.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"");if(/^[\],:{}\s]*$/.test(filtered))return eval("("+str+")");throw new SyntaxError("Error parsing JSON, source is not valid.")},$.quoteString=function(a){return a.match(escape)?'"'+a.replace(escape,function(a){var b=meta[a];return"string"==typeof b?b:(b=a.charCodeAt(),"\\u00"+Math.floor(b/16).toString(16)+(b%16).toString(16))})+'"':'"'+a+'"'}}(jQuery);
$(document).ready(function(){
	//определяем тип устройства и вешаем класс на body
	if(!isMobile.any()){
		$('body').addClass('device-desktop');
	}else {
		$('body').addClass('device-mobile');
	}
	//Плавное перемещение к якорю 
	$('a.goto').on("click touchstart", function() {
		if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
		  var target = $(this.hash);
		  target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
		  if (target.length) {
		    $('html,body').animate({
		      scrollTop: target.offset().top-35
		    }, 1000);
		    return false;
		  }
		}
	});

	/*popups*/
	$('.image-popup-link').magnificPopup({ 
		type: 'image'
	});
	$('.popup-gallery').magnificPopup({
          delegate: 'a',
          type: 'image',
          tLoading: 'Загружается изображение #%curr%...',
          mainClass: 'mfp-img-mobile',
          gallery: {
            enabled: true,
            navigateByImgClick: true,
            preload: [0,1] // Will preload 0 - before current, and 1 after the current image
          },
          image: {
            tError: '<a href="%url%">Изображение #%curr%</a> не может быть загружено.',
            
          }
    });
	$('.popup-youtube, .popup-vimeo, .popup-gmaps').magnificPopup({
      disableOn: 700,
      type: 'iframe',
      mainClass: 'mfp-fade',
      removalDelay: 500,
      preloader: false,

      fixedContentPos: false
    });
	
	/*tooltips*/
	$('.js-car-item').each(function(){
		var titleHeight = $(this).find('.header-car-item-title').outerHeight();
		var contentHeight = $(this).find('.header-car-item-content').outerHeight();
		$(this).find('.header-car-item-content').css({
			'top': -(contentHeight+12)+'px'
		});
	});
	$('.details-list-item').each(function(){
		var contentHeight = $(this).find('.details-list-item-tooltip').outerHeight();
		$(this).find('.details-list-item-tooltip').css({
			'top': -(contentHeight+12)+'px'
		});
	});

	/*select*/
	$(".js-select").select2();

	/*sliders*/
	$('.js-reviews-slider').bxSlider({
		pager: true,

	});
	$('.js-reviews-slider2').bxSlider({
		pager: true,
		slideWidth: 530,
		adaptiveHeight: true
	});

	$('.js-marks-slider').bxSlider({
		pager: false,
		minSlides: 6,
		maxSlides: 6,
		moveSlides: 1,
		auto: true,
		pause:2000,
		slideWidth: 170,
		onSliderLoad: function() {
			$('.js-marks-slider li .mark-item').matchHeight();
		}
	});

	/*$(function() {
	    $('.reason-item').matchHeight('');
	});*/
	

	/*js show*/
	$('.js-show').on('click', function(e) {
		e.preventDefault();
		var showTarget = $(this).data('show');
		$(this).hide();
		$(showTarget).show(300);
	});


	$(window).load(function(){
		var data = $('.s-map').attr('path');
		setTimeout(function(){
			$('.s-map').load('./'+data);

		},100);

	});

	$('.goup').on('click', function(){
		if ($(this).hasClass('top')) {
			$(this).removeClass('top');
			$(this).find('span').text('Наверх');
			$(this).find('i').addClass('fa-caret-up');
			$(this).find('i').removeClass('fa-caret-down');
			var target = $(this.hash);
			target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
			if (target.length) {
			  $('html,body').animate({
			    scrollTop: scrollPosition
			  }, 1000);
			  return false;
			}
		} else {
			$(this).addClass('top');
			$(this).find('span').text('');
			$(this).find('i').removeClass('fa-caret-up');
			$(this).find('i').addClass('fa-caret-down');
			scrollPosition = $(window).scrollTop();
			var target = $(this.hash);
			target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
			if (target.length) {
			  $('html,body').animate({
			    scrollTop: target.offset().top
			  }, 1000);
			  return false;
			}
		}
	});

	/*calc cars*/
    file = './models-json.json';
    $.ajax({
        url: file,
        //force to handle it as text
        cashe: true,
        dataType: "text",
        success: function(data) {
            
            //data downloaded so we call parseJSON function 
            //and pass downloaded data
            var json = $.parseJSON(data);
            //now json variable contains data in json format
            //let's display a few items
            /*$('#results').html('Plugin name: ' + json.name + '<br />Author: ' + json.author.name);*/


            $.each(json, function(key, val) {
			   $('.select-car-mark').append('<option value="'+val.optionValue+'">'+val.optionTitle+'</option>');
			});
        }
    });

    $('.select-car-mark').on('change', function() {
    	thisValue = $(this).val();
    	if (thisValue != "" && thisValue != "Другое") {
    		$('.select-car-model').prop({
    			disabled: false,
    		});
    		$.ajax({
		        url: file,
		        //force to handle it as text
		        cashe: true,
		        dataType: "text",
		        success: function(data) {
		            
		            //data downloaded so we call parseJSON function 
		            //and pass downloaded data
		            var json = $.parseJSON(data);
		            //now json variable contains data in json format
		            //let's display a few items
		            /*$('#results').html('Plugin name: ' + json.name + '<br />Author: ' + json.author.name);*/


		            $.each(json, function(key, val) {
		            	if (val.optionValue == thisValue) {
		            		var modelsData = val.models;
		            	
		            		$('.select-car-model').val('Модель');
		            		$('.select-car-model + .select2').find('.select2-selection__rendered').text('Модель');
		            		$('.select-car-model').html('<option value="">Модель</option><option value="Другое">Другое</option>');
		            		$.each(modelsData, function(key2, val2) {
		            		 	$('.select-car-model').append('<option value="'+val2.optionValue+'">'+val2.optionTitle+'</option>');
		            		});
		            		
		            	}
					});
		        }
		    });
    	}else {
    		$('.select-car-model').prop({
    			disabled: true,
    		});
    	}
    });


	/*$('.s-reviews2').resizecrop({
	      width:283,
	      height:273,
	      vertical:"center"
    });*/

});

/*
* Обработка формы
*/
$(document).ready(function(){
	var magnificPopup = $.magnificPopup.instance;
	$('.ajax-popup-link').magnificPopup({
		type: 'ajax',
		removalDelay: 500, 
		ajax: {
		  settings: null,
		  cursor: 'mfp-ajax-cur',
		  tError: '<a href="%url%">Контент</a> не может быть загружен.'
		},
		callbacks: {
		    beforeOpen: function() {
		       this.st.mainClass = 'mfp-zoom-in';
		    },
		    parseAjax: function() {
		    	setTimeout(function() {
		    		console.log('After open');
				    $('input.phone').inputmask({
						mask: '+7 (999) 999 99 99',
						showMaskOnHover: false,
				        showMaskOnFocus: true,
					});
					$('input, textarea').placeholder();
		    	}, 100);
			}
		},
		midClick: true
	});
	//parsing utm
	var $_GET = {};
	document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () {
	    function decode(s) {
	        return decodeURIComponent(s.split("+").join(" "));
	    }

	    $_GET[decode(arguments[1])] = decode(arguments[2]);
	});

	$('input.phone').inputmask({
		mask: '+7 (999) 999 99 99',
		showMaskOnHover: false,
        showMaskOnFocus: true,
	});
	$('input, textarea').placeholder();

	
	//Функция проверки на валидность
	function validate(field, type) { 
		var pp = '';
		if(type == 'email'){
			var pp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			}
		//если подключен плагин maskedinput
		if(type == 'phone'){
			var pp = /^\+?[\d()\-\s]*\d+\s*$/;
		}
		//если нет маски
		/*if(type == 'phone'){
			var pp = /^((8|\+7|3|\+3)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,20}$/;
		}*/
		if(type == 'onlyNumber'){
			var pp = /^([0-9()\/+ -]+)$/;
		}
		if(type == 'notEmpty'){
			var pp = /^[A-Za-zА-Яа-я0-9 _]*[A-Za-zА-Яа-я0-9][A-Za-zА-Яа-я0-9 _#()$@8%№;'":,.?!#*-]*$/;
		}

		//Проверка поля по выбранному типу
		if(!field.match(pp)){
		return false;
		}
		return true;
	}

	//количество обязательных полей
	var required;
	//количество полей прощедших валидацию
	var validated;
	//тип формы
	var formtype = '';

	 //проверяем валидность при изменение текста в инпутах
	$('body').on('input', '.required',function(){
  		var fieldType = $(this).attr('name');
		if(!validate($(this).val(), fieldType)) {
  			$(this).parents('.form-group').removeClass('has-success').addClass('has-error');
  				
  		} else {
  			$(this).parents('.form-group').removeClass('has-error').addClass('has-success');
  		}

  		//количество объязатеных полей
	  	required = $(this).parents('form').find('.required').length;
	  	//количество полей прошедших валидацию
		validated = $(this).parents('form').find('.has-success').length;
  		if (required == validated){
  			$(this).parents('form').find('.error-msg').hide();
  		}
	});
	$('input.required').bind('textchange', function (event, previousText) {
	  var fieldType = $(this).attr('name');
		if(!validate($(this).val(), fieldType)) {
  			$(this).parents('.form-group').removeClass('has-success').addClass('has-error');
  				
  		} else {
  			$(this).parents('.form-group').removeClass('has-error').addClass('has-success');
  		}

  		//количество объязатеных полей
	  	required = $(this).parents('form').find('.required').length;
	  	//количество полей прошедших валидацию
		validated = $(this).parents('form').find('.has-success').length;
  		if (required == validated){
  			$(this).parents('form').find('.error-msg').hide();
  		}
	});
    //проверяем валидность когда нажимается конпка
	$('body').on('click', '.submit',function(e){
		e.preventDefault();
		var $thisBtn = $(this);
		//запоминаем тип формы
		formtype = $(this).parents('form').data('type');
	  	//проверяем обязательные поля на валидность
	  	$(this).parents('form').find('.required').each(function(){
	  		var fieldType = $(this).attr('name');
			if(!validate($(this).val(), fieldType)) {
	  			$(this).parents('.form-group').removeClass('has-success').addClass('has-error');	
	  		} else {
	  			$(this).parents('.form-group').removeClass('has-error').addClass('has-success');
	  		}
		});
		//количество объязатеных полей
	  	required = $(this).parents('form').find('.required').length;
	  	//количество полей прошедших валидацию
		validated = $(this).parents('form').find('.has-success').length;

        //если нет ошибок
		if (required == validated){
			var formData = {};
			formData.username = $(this).parents('form').find('.name').val();
			formData.phone = $(this).parents('form').find('.phone').val();
			formData.email = $(this).parents('form').find('.email').val();
			formData.message = $(this).parents('form').find('.message').val();
			formData.comments = $(this).parents('form').find('.comments').val();
            formData.carMarkUser = $(this).parents('form').find('.carMarkUser').val();
			formData.formtype = formtype;
			formData.file = $(this).parents('form').find('.file-link').html();
			formData.carMark = $(this).parents('form').find('.select-car-mark').val();
			formData.carModel = $(this).parents('form').find('.select-car-model').val();
			formData.carYear = $(this).parents('form').find('.select-car-year').val();

			//utm
			$('.utm_campaign').text($_GET["utm_campaign"]);
			if ($_GET["utm_campaign"] != undefined) {
				formData.utmCampaign = $_GET["utm_campaign"]
			}
			$('.utm_term').text($_GET["utm_term"]);
			if ($_GET["utm_term"] != undefined) {
				formData.utmTerm = $_GET["utm_term"]
			}
			$('.utm_source').text($_GET["utm_source"]);
			if ($_GET["utm_source"] != undefined) {
				formData.utmSource = $_GET["utm_source"]
			}
			$('.utm_medium').text($_GET["utm_medium"]);
			if ($_GET["utm_medium"] != undefined) {
				formData.utmMedium = $_GET["utm_medium"]
			}

			//идентификатор цели метрики
			var yaTarget = $(this).parents('form').data('target');
			//чистим форму
			function clearForm () {
                $(this).removeClass('valid-for-file-upload');
                $('input:not(":checkbox"), textarea, select').val('');
                $('.form-group').removeClass('has-success').removeClass('has-error');
                formtype = '';
            };
            $thisText = $(this).text();
            $thisBtn.addClass('disabled').text('Отправка...')
 
            $.ajax({ //отправляем аяксом
                url:'php/mail.php',
                type:'POST',
                data:'jsonData=' + $.toJSON(formData),
                success: function() {
                    $('.submit-form-loading').fadeOut();
                    $('.submit-form-error').fadeOut();
                    magnificPopup.close();
                    setTimeout(function() {
                        $('.thank-you-btn').magnificPopup({
                            type: 'ajax',
                            removalDelay: 500, 
                            ajax: {
                              settings: null,
                              cursor: 'mfp-ajax-cur',
                              tError: '<a href="%url%">Контент</a> не может быть загружен.',
                            },
                            callbacks: {
                                beforeOpen: function() {
                                   this.st.mainClass = 'mfp-zoom-in';
                                },
                            },
                            midClick: true
                        }).magnificPopup('open');
                    }, 501);
                    $thisBtn.removeClass('disabled').text($thisText);
                    clearForm ();
                    reachGoalFunc(yaTarget);
                    reachGoalFunc(obwee_koli4estvo);
 
                },
                error: function() {
                    alert('При отправке данных произошла ошибка, попробуйте снова.');
                    $thisBtn.removeClass('disabled').text($thisText);
                    clearForm ();
                }
            }); 
        }
    });
});

В корне лежат следующие файлы html.

modal-thank-you.html

<div class="white-popup mfp-with-anim">
    <div class="thank-you">
        <h4>Спасибо!</h4>
        <p>Ваша заявка получена.</p>
        <p>В ближайшее время</p>
        <p>мы с Вами свяжемся.</p>
    </div>
</div>

modal-callback.html

<div class="white-popup mfp-with-anim">
    <form data-type="Заказать обратный звонок" data-target="podborCallback" class="form">
        <div class="form-heading">
            <h4>Заказать обратный звонок</h4>
            <p>
                Оставьте контактные данные и<br>
                мы перезвоним в течение 10 минут.
            </p>
        </div>
        <div class="form-content">
            <div class="form-group">
                <input type="text" name="notEmpty" class="form-control name" placeholder="Ваше имя">
            </div>
            <div class="form-group">
                <input type="text" name="phone" class="form-control required phone" placeholder="Ваш телефон *">
            </div>
 
            <a href="#" class="submit btn btn-success">
                Заказ звонка
            </a>
        </div>
    </form>
</div>

 

modal-service1.html

<div class="white-popup mfp-with-anim">
    <form data-type="Выездная проверка автомобиля экспертом" data-target="podborService1" class="form">
        <div class="form-heading">
            <h4>Оставить заявку</h4>
            <p>
                Заполните форму и мы <br>
             перезвоним Вам в течение 15 минут.
            </p>
        </div>
        <div class="form-content">
            <div class="form-group">
                <input type="text" name="notEmpty" class="form-control name" placeholder="Ваше имя">
            </div>
            <div class="form-group">
                <input type="text" name="phone" class="form-control required phone" placeholder="Ваш телефон *">
            </div>
 
            <a href="#" class="submit btn btn-success">
                Оставить заявку
            </a>
        </div>
    </form>
</div>

 

 

При заполнении формы
 

<div class="buy-one-click">
        <div class="container">
            <div class="section-title">
                <h3>Продайте свой автомобиль всего за 1 клик!</h3>
            </div>
            <a href="modal-service1.html" class="ajax-popup-link btn btn-success" style="text-transform: none; padding: 20px 20px 20px 40px; width:300px; margin:10px auto 0; display:block; line-height: 0.8;position:relative; font-size:22px;"><img src="img/arrow-right.png" style="position:absolute; top:21px;left:53px;">Оставить
                заявку</a>
 
        </div>

 

modal-service1.html

<div class="white-popup mfp-with-anim">
    <form data-type="Выездная проверка автомобиля экспертом" data-target="podborService1" class="form">
        <div class="form-heading">
            <h4>Оставить заявку</h4>
            <p>
                Заполните форму и мы <br>
             перезвоним Вам в течение 15 минут.
            </p>
        </div>
        <div class="form-content">
            <div class="form-group">
                <input type="text" name="notEmpty" class="form-control name" placeholder="Ваше имя">
            </div>
            <div class="form-group">
                <input type="text" name="phone" class="form-control required phone" placeholder="Ваш телефон *">
            </div>
 
            <a href="#" class="submit btn btn-success">
                Оставить заявку
            </a>
        </div>
    </form>
</div>

При вводе Имя и номера телефона выскакивают всплывающие сообщения от файла modal-thank-you.html содержащий информацию: Спасибо!Ваша заявка получена.В ближайшее время мы с Вами свяжемся.
И данное сообщение исчезает. При этом на почту ничего не приходит.

Link to comment
Share on other sites

  • 0

Господи... Ради лэндинга такого монстра городить? Такое вполне можно вместить в один php файл... Да и скрипт гораздо меньше можно сделать, много лишнего...

Смотрите на аргументы функции mail и сюда.

P.S.: вообще советую присмотреться к swiftmailer. 

Link to comment
Share on other sites

  • 0

Прописал, всё равно не доходят письма. Может всё так и ошибка в содержимом mail.php?Если используется jsonData , как тогда правильно сформировать этот mail.php?

Edited by it-seo77
Link to comment
Share on other sites

  • 0
<?php
    if (isset($_POST['notEmpty'])) {$name = $_POST['notEmpty'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['formData'])) {$formData = $_POST['formData'];}

    $from_user = "=?UTF-8?B?".base64_encode($from_user)."?=";
    $subject = "=?UTF-8?B?".base64_encode($subject)."?=";
 
    $to = "online@yandex.ru"; /*Укажите адрес, га который должно приходить письмо*/
    $sendfrom   = "online@yandex.ru"; /*Укажите адрес, с которого будет приходить письмо, можно не настоящий, нужно для формирования заголовка письма*/
    $headers  = "From: " . strip_tags($sendfrom) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    $subject = "Новая заявка";
    $message = "$formData<br> <b>Имя пославшего:</b> $name <br><b>Телефон:</b> $phone<br>";
    $send = mail ($to, $subject, $message, $headers);
?>

Файлы в UTF-8

Link to comment
Share on other sites

  • 0
$from_user = "=?UTF-8?B?".base64_encode($from_user)."?=";
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";

это я дал вам для примера, как нужно кодировать определенные строки
в вашем случае вы должны кодировать $sendfrom и $subject у себя

Link to comment
Share on other sites

  • 0

пример я вам показал, какие переменные вам нужно кодировать сказал.

$sendfrom= "=?UTF-8?B?".base64_encode($sendfrom)."?=";
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";

вставлять это все нужно после инициализации данных переменных соответственно и до использования их в функции mail

Link to comment
Share on other sites

  • 0
<?php
    if (isset($_POST['notEmpty'])) {$name = $_POST['notEmpty'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['formData'])) {$formData = $_POST['formData'];}

    $to = "online@yandex.ru"; /*Укажите адрес, на который должно приходить письмо*/
    $sendfrom   = "online@yandex.ru"; /*Укажите адрес, с которого будет приходить письмо, можно не настоящий, нужно для формирования заголовка письма*/
    $headers  = "From: " . strip_tags($sendfrom) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    $subject = "=?UTF-8?B?".base64_encode($subject)."?=";
    $message = "$formData<br> <b>Имя отправителя:</b> $name <br><b>Телефон:</b> $phone<br>";
    $send = mail ($to, $subject, $message, $headers);
?>

Вставил так код приходит только следующее пустое значение, где нет отображения имени отправителя и номер телефона.

Имя отправителя: 
Телефон:

Link to comment
Share on other sites

  • 0
2 часа назад, it-seo77 сказал:

Вставил так код приходит только следующее пустое значение, где нет отображения имени отправителя и номер телефона.

Ну для начала, советую познакомиться с собственно рекомендациями по коду PHP, а именно

?>

Используется, если после PHP кода идёт что то другое, например HTML, иначе - не стоит закрывать <?php

Далее, что говорит 

var_dump($_POST);

? Полагаю, что Вы обрабатываете пустые значения (приношу свои извинения, но в вашем коде не стал разбираться, не люблю спагетти).

P.S.: Почему в PHP файле нет исключений? Вы ведь понимаете, что у Вас всегда Ajax запрос получает success результат?

P.P.S.: Советую всё таки передать сайт профессионалам, которые сделают всё правильно, безопасно и красиво, как архитектурно, так и визуально. Или всё таки поучить матчасть по PHP, ибо 

2 часа назад, it-seo77 сказал:

<?php
    if (isset($_POST['notEmpty'])) {$name = $_POST['notEmpty'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['formData'])) {$formData = $_POST['formData'];}

    $to = "online@yandex.ru"; /*Укажите адрес, на который должно приходить письмо*/
    $sendfrom   = "online@yandex.ru"; /*Укажите адрес, с которого будет приходить письмо, можно не настоящий, нужно для формирования заголовка письма*/
    $headers  = "From: " . strip_tags($sendfrom) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    $subject = "=?UTF-8?B?".base64_encode($subject)."?=";
    $message = "$formData<br> <b>Имя отправителя:</b> $name <br><b>Телефон:</b> $phone<br>";
    $send = mail ($to, $subject, $message, $headers);
?>

 

Полный треш...

Ни валидации (валидация на клиенте полный бред с самого начала его первой реализации, если она не на ajax только), ни нормальной обработки входящих данных... Да и лога никакого нет на случай проблем с отправкой.

Edited by BrusSENS
Link to comment
Share on other sites

  • 0

А что вы хотели, чтобы за вас все сделали?

1. $sendfrom вы не закодировали
2. $subject = "Новая заявка"; удалил, т.е. вы сейчас кодируете пустую строку.
3. Что это за форма такая
<form data-type="Выездная проверка автомобиля экспертом" data-target="podborService1" class="form">
на сколько я помню форма без указания method отправляет данные через GET, а вы их смотрите в POST

Чтобы вам помогли советом тут, нужно хотя бы немного читать теорию и понимать что вы пишете.
Иначе есть разделы "сделайте мне..."

Link to comment
Share on other sites

  • 0

Дело в том, что впервые столкнулся с Ajax формой обратной связи и с данной формой обработки. Реально может непонятно спрашиваю, попробую детально уточнить.4 дня бился как об стенку, удалось только получить возможность принимать пустое сообщение. Оказалось что проблема была с хостингом, который молчал 2-ое суток сбил меня полностью с панталогии, с грехом пополам решили вопрос отправки. Реально хочу понять где я ошибся. Немного внёс коррективы, но дальше не могу пробиться. Как только не делал обработчик, всё бесполезно. Теоретически знающий может сказать, а вот реальную ошибку не увидит. Большая просьба помочь с выявлением ошибки.

На сайте представлены 3-и формы заявки.

Вот index.php форма первая заявки

<h4>Заявка на выкуп авто онлайн</h4>
                            <p></p>
                        </div>
                        <div class="form-content">
                            <div class="form-group">
                                <input type="text" name="notEmpty" class="form-control name" placeholder="Ваше имя">
                            </div>
							<div class="form-group">
                                <input type="text" name="notEmpty2" class="form-control name" placeholder="Марка авто">
                            </div>
							<div class="form-group">
                                <input type="text" name="notEmpty3" class="form-control name" placeholder="Модель авто">
                            </div>
							<div class="form-group">
                                <input type="text" name="notEmpty4" class="form-control name" placeholder="Год выпуска">
                            </div>
                            <div class="form-group">
                                <input type="text" name="phone" class="form-control required phone" placeholder="Ваш телефон *">
                            </div>

                            <a href="#" class="submit btn btn-success">
                                Отправить заявку
                            </a>
                        </div>
                    </form>

Другая форма заявки в этом же index.php

<div class="buy-one-click">
        <div class="container">
            <div class="section-title">
                <h3>Продайте свой автомобиль всего за 1 клик!</h3>
            </div>
            <a href="modal-service1.html" class="ajax-popup-link btn btn-success" style="text-transform: none; padding: 20px 20px 20px 40px; width:300px; margin:10px auto 0; display:block; line-height: 0.8;position:relative; font-size:22px;"><img src="img/arrow-right.png" style="position:absolute; top:21px;left:53px;">Оставить
                заявку</a>

        </div>

И третья форма заявки в этом же index.php

<a href="modal-callback.html" class="footer-contacts-callback ajax-popup-link">
                                Заявка на выкуп авто онлайн
                            </a>

файл modal-callback.html

<div class="white-popup mfp-with-anim">
    <form data-type="Продайте свой автомобиль всего за 1 клик!" data-target="podborCallback" class="form">
        <div class="form-heading">
            <h4>Оставить заявку</h4>
            <p>
                Заполните заявку и мы <br>
             перезвоним Вам в течение 20 минут.
            </p>
        </div>
        <div class="form-content">
                            <div class="form-group">
                                <input type="text" name="notEmpty" class="form-control name" placeholder="Ваше имя">
                            </div>
							<div class="form-group">
                                <input type="text" name="notEmpty2" class="form-control name" placeholder="Марка авто">
                            </div>
							<div class="form-group">
                                <input type="text" name="notEmpty3" class="form-control name" placeholder="Модель авто">
                            </div>
							<div class="form-group">
                                <input type="text" name="notEmpty4" class="form-control name" placeholder="Год выпуска">
                            </div>
                            <div class="form-group">
                                <input type="text" name="phone" class="form-control required phone" placeholder="Ваш телефон *">
                            </div>

                            <a href="#" class="submit btn btn-success">
                                Отправить заявку
            </a>
        </div>
    </form>
</div>

и modal-service1.html

<div class="white-popup mfp-with-anim">
    <form data-type="Продайте свой автомобиль всего за 1 клик!" data-target="podborService1" class="form">
        <div class="form-heading">
            <h4>Оставить заявку</h4>
            <p>
                Заполните заявку и мы <br>
             перезвоним Вам в течение 20 минут.
            </p>
        </div>
                           <div class="form-content">
                            <div class="form-group">
                                <input type="text" name="notEmpty" class="form-control name" placeholder="Ваше имя">
                            </div>
							<div class="form-group">
                                <input type="text" name="notEmpty2" class="form-control name" placeholder="Марка авто">
                            </div>
							<div class="form-group">
                                <input type="text" name="notEmpty3" class="form-control name" placeholder="Модель авто">
                            </div>
							<div class="form-group">
                                <input type="text" name="notEmpty4" class="form-control name" placeholder="Год выпуска">
                            </div>
                            <div class="form-group">
                                <input type="text" name="phone" class="form-control required phone" placeholder="Ваш телефон *">
                            </div>

                            <a href="#" class="submit btn btn-success">
                                Отправить заявку
            </a>
        </div>
    </form>
</div>

Файл script.js

/*! jQuery JSON plugin v2.5.1 | github.com/Krinkle/jquery-json */
!function($){"use strict";var escape=/["\\\x00-\x1f\x7f-\x9f]/g,meta={"\b":"\\b","	":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},hasOwn=Object.prototype.hasOwnProperty;$.toJSON="object"==typeof JSON&&JSON.stringify?JSON.stringify:function(a){if(null===a)return"null";var b,c,d,e,f=$.type(a);if("undefined"===f)return void 0;if("number"===f||"boolean"===f)return String(a);if("string"===f)return $.quoteString(a);if("function"==typeof a.toJSON)return $.toJSON(a.toJSON());if("date"===f){var g=a.getUTCMonth()+1,h=a.getUTCDate(),i=a.getUTCFullYear(),j=a.getUTCHours(),k=a.getUTCMinutes(),l=a.getUTCSeconds(),m=a.getUTCMilliseconds();return 10>g&&(g="0"+g),10>h&&(h="0"+h),10>j&&(j="0"+j),10>k&&(k="0"+k),10>l&&(l="0"+l),100>m&&(m="0"+m),10>m&&(m="0"+m),'"'+i+"-"+g+"-"+h+"T"+j+":"+k+":"+l+"."+m+'Z"'}if(b=[],$.isArray(a)){for(c=0;c<a.length;c++)b.push($.toJSON(a[c])||"null");return"["+b.join(",")+"]"}if("object"==typeof a){for(c in a)if(hasOwn.call(a,c)){if(f=typeof c,"number"===f)d='"'+c+'"';else{if("string"!==f)continue;d=$.quoteString(c)}f=typeof a[c],"function"!==f&&"undefined"!==f&&(e=$.toJSON(a[c]),b.push(d+":"+e))}return"{"+b.join(",")+"}"}},$.evalJSON="object"==typeof JSON&&JSON.parse?JSON.parse:function(str){return eval("("+str+")")},$.secureEvalJSON="object"==typeof JSON&&JSON.parse?JSON.parse:function(str){var filtered=str.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"");if(/^[\],:{}\s]*$/.test(filtered))return eval("("+str+")");throw new SyntaxError("Error parsing JSON, source is not valid.")},$.quoteString=function(a){return a.match(escape)?'"'+a.replace(escape,function(a){var b=meta[a];return"string"==typeof b?b:(b=a.charCodeAt(),"\\u00"+Math.floor(b/16).toString(16)+(b%16).toString(16))})+'"':'"'+a+'"'}}(jQuery);
$(document).ready(function(){
	//определяем тип устройства и вешаем класс на body
	if(!isMobile.any()){
		$('body').addClass('device-desktop');
	}else {
		$('body').addClass('device-mobile');
	}
	//Плавное перемещение к якорю 
	$('a.goto').on("click touchstart", function() {
		if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
		  var target = $(this.hash);
		  target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
		  if (target.length) {
		    $('html,body').animate({
		      scrollTop: target.offset().top-35
		    }, 1000);
		    return false;
		  }
		}
	});

	/*popups*/
	$('.image-popup-link').magnificPopup({ 
		type: 'image'
	});
	$('.popup-gallery').magnificPopup({
          delegate: 'a',
          type: 'image',
          tLoading: 'Загружается изображение #%curr%...',
          mainClass: 'mfp-img-mobile',
          gallery: {
            enabled: true,
            navigateByImgClick: true,
            preload: [0,1] // Will preload 0 - before current, and 1 after the current image
          },
          image: {
            tError: '<a href="%url%">Изображение #%curr%</a> не может быть загружено.',
            
          }
    });
	$('.popup-youtube, .popup-vimeo, .popup-gmaps').magnificPopup({
      disableOn: 700,
      type: 'iframe',
      mainClass: 'mfp-fade',
      removalDelay: 500,
      preloader: false,

      fixedContentPos: false
    });
	
	/*tooltips*/
	$('.js-car-item').each(function(){
		var titleHeight = $(this).find('.header-car-item-title').outerHeight();
		var contentHeight = $(this).find('.header-car-item-content').outerHeight();
		$(this).find('.header-car-item-content').css({
			'top': -(contentHeight+12)+'px'
		});
	});
	$('.details-list-item').each(function(){
		var contentHeight = $(this).find('.details-list-item-tooltip').outerHeight();
		$(this).find('.details-list-item-tooltip').css({
			'top': -(contentHeight+12)+'px'
		});
	});

	/*select*/
	$(".js-select").select2();

	/*sliders*/
	$('.js-reviews-slider').bxSlider({
		pager: true,

	});
	$('.js-reviews-slider2').bxSlider({
		pager: true,
		slideWidth: 530,
		adaptiveHeight: true
	});

	$('.js-marks-slider').bxSlider({
		pager: false,
		minSlides: 6,
		maxSlides: 6,
		moveSlides: 1,
		auto: true,
		pause:2000,
		slideWidth: 170,
		onSliderLoad: function() {
			$('.js-marks-slider li .mark-item').matchHeight();
		}
	});

	/*$(function() {
	    $('.reason-item').matchHeight('');
	});*/
	

	/*js show*/
	$('.js-show').on('click', function(e) {
		e.preventDefault();
		var showTarget = $(this).data('show');
		$(this).hide();
		$(showTarget).show(300);
	});


	$(window).load(function(){
		var data = $('.s-map').attr('path');
		setTimeout(function(){
			$('.s-map').load('./'+data);

		},100);

	});

	$('.goup').on('click', function(){
		if ($(this).hasClass('top')) {
			$(this).removeClass('top');
			$(this).find('span').text('Наверх');
			$(this).find('i').addClass('fa-caret-up');
			$(this).find('i').removeClass('fa-caret-down');
			var target = $(this.hash);
			target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
			if (target.length) {
			  $('html,body').animate({
			    scrollTop: scrollPosition
			  }, 1000);
			  return false;
			}
		} else {
			$(this).addClass('top');
			$(this).find('span').text('');
			$(this).find('i').removeClass('fa-caret-up');
			$(this).find('i').addClass('fa-caret-down');
			scrollPosition = $(window).scrollTop();
			var target = $(this.hash);
			target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
			if (target.length) {
			  $('html,body').animate({
			    scrollTop: target.offset().top
			  }, 1000);
			  return false;
			}
		}
	});

	/*calc cars*/
    file = './models-json.json';
    $.ajax({
        url: file,
        //force to handle it as text
        cashe: true,
        dataType: "text",
        success: function(data) {
            
            //data downloaded so we call parseJSON function 
            //and pass downloaded data
            var json = $.parseJSON(data);
            //now json variable contains data in json format
            //let's display a few items
            /*$('#results').html('Plugin name: ' + json.name + '<br />Author: ' + json.author.name);*/


            $.each(json, function(key, val) {
			   $('.select-car-mark').append('<option value="'+val.optionValue+'">'+val.optionTitle+'</option>');
			});
        }
    });

    $('.select-car-mark').on('change', function() {
    	thisValue = $(this).val();
    	if (thisValue != "" && thisValue != "Другое") {
    		$('.select-car-model').prop({
    			disabled: false,
    		});
    		$.ajax({
		        url: file,
		        //force to handle it as text
		        cashe: true,
		        dataType: "text",
		        success: function(data) {
		            
		            //data downloaded so we call parseJSON function 
		            //and pass downloaded data
		            var json = $.parseJSON(data);
		            //now json variable contains data in json format
		            //let's display a few items
		            /*$('#results').html('Plugin name: ' + json.name + '<br />Author: ' + json.author.name);*/


		            $.each(json, function(key, val) {
		            	if (val.optionValue == thisValue) {
		            		var modelsData = val.models;
		            	
		            		$('.select-car-model').val('Модель');
		            		$('.select-car-model + .select2').find('.select2-selection__rendered').text('Модель');
		            		$('.select-car-model').html('<option value="">Модель</option><option value="Другое">Другое</option>');
		            		$.each(modelsData, function(key2, val2) {
		            		 	$('.select-car-model').append('<option value="'+val2.optionValue+'">'+val2.optionTitle+'</option>');
		            		});
		            		
		            	}
					});
		        }
		    });
    	}else {
    		$('.select-car-model').prop({
    			disabled: true,
    		});
    	}
    });


	/*$('.s-reviews2').resizecrop({
	      width:283,
	      height:273,
	      vertical:"center"
    });*/

});

/*
* Обработка формы
*/
$(document).ready(function(){
	var magnificPopup = $.magnificPopup.instance;
	$('.ajax-popup-link').magnificPopup({
		type: 'ajax',
		removalDelay: 500, 
		ajax: {
		  settings: null,
		  cursor: 'mfp-ajax-cur',
		  tError: '<a href="%url%">Контент</a> не может быть загружен.'
		},
		callbacks: {
		    beforeOpen: function() {
		       this.st.mainClass = 'mfp-zoom-in';
		    },
		    parseAjax: function() {
		    	setTimeout(function() {
		    		console.log('After open');
				    $('input.phone').inputmask({
						mask: '+7 (999) 999 99 99',
						showMaskOnHover: false,
				        showMaskOnFocus: true,
					});
					$('input, textarea').placeholder();
		    	}, 100);
			}
		},
		midClick: true
	});
	//parsing utm
	var $_GET = {};
	document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () {
	    function decode(s) {
	        return decodeURIComponent(s.split("+").join(" "));
	    }

	    $_GET[decode(arguments[1])] = decode(arguments[2]);
	});

	$('input.phone').inputmask({
		mask: '+7 (999) 999 99 99',
		showMaskOnHover: false,
        showMaskOnFocus: true,
	});
	$('input, textarea').placeholder();

	
	//Функция проверки на валидность
	function validate(field, type) { 
		var pp = '';
		if(type == 'email'){
			var pp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			}
		//если подключен плагин maskedinput
		if(type == 'phone'){
			var pp = /^\+?[\d()\-\s]*\d+\s*$/;
		}
		//если нет маски
		/*if(type == 'phone'){
			var pp = /^((8|\+7|3|\+3)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,20}$/;
		}*/
		if(type == 'onlyNumber'){
			var pp = /^([0-9()\/+ -]+)$/;
		}
		if(type == 'notEmpty'){
			var pp = /^[A-Za-zА-Яа-я0-9 _]*[A-Za-zА-Яа-я0-9][A-Za-zА-Яа-я0-9 _#()$@8%№;'":,.?!#*-]*$/;
		}

		//Проверка поля по выбранному типу
		if(!field.match(pp)){
		return false;
		}
		return true;
	}

	//количество обязательных полей
	var required;
	//количество полей прощедших валидацию
	var validated;
	//тип формы
	var formtype = '';

	 //проверяем валидность при изменение текста в инпутах
	$('body').on('input', '.required',function(){
  		var fieldType = $(this).attr('name');
		if(!validate($(this).val(), fieldType)) {
  			$(this).parents('.form-group').removeClass('has-success').addClass('has-error');
  				
  		} else {
  			$(this).parents('.form-group').removeClass('has-error').addClass('has-success');
  		}

  		//количество объязатеных полей
	  	required = $(this).parents('form').find('.required').length;
	  	//количество полей прошедших валидацию
		validated = $(this).parents('form').find('.has-success').length;
  		if (required == validated){
  			$(this).parents('form').find('.error-msg').hide();
  		}
	});
	$('input.required').bind('textchange', function (event, previousText) {
	  var fieldType = $(this).attr('name');
		if(!validate($(this).val(), fieldType)) {
  			$(this).parents('.form-group').removeClass('has-success').addClass('has-error');
  				
  		} else {
  			$(this).parents('.form-group').removeClass('has-error').addClass('has-success');
  		}

  		//количество объязатеных полей
	  	required = $(this).parents('form').find('.required').length;
	  	//количество полей прошедших валидацию
		validated = $(this).parents('form').find('.has-success').length;
  		if (required == validated){
  			$(this).parents('form').find('.error-msg').hide();
  		}
	});
    //проверяем валидность когда нажимается конпка
	$('body').on('click', '.submit',function(e){
		e.preventDefault();
		var $thisBtn = $(this);
		//запоминаем тип формы
		formtype = $(this).parents('form').data('type');
	  	//проверяем обязательные поля на валидность
	  	$(this).parents('form').find('.required').each(function(){
	  		var fieldType = $(this).attr('name');
			if(!validate($(this).val(), fieldType)) {
	  			$(this).parents('.form-group').removeClass('has-success').addClass('has-error');	
	  		} else {
	  			$(this).parents('.form-group').removeClass('has-error').addClass('has-success');
	  		}
		});
		//количество обязательных полей
	  	required = $(this).parents('form').find('.required').length;
	  	//количество полей прошедших валидацию
		validated = $(this).parents('form').find('.has-success').length;

        //если нет ошибок
		if (required == validated){
			var formData = {};
			formData.username = $(this).parents('form').find('.name').val();
			formData.phone = $(this).parents('form').find('.phone').val();
			formData.email = $(this).parents('form').find('.email').val();
			formData.message = $(this).parents('form').find('.message').val();
			formData.comments = $(this).parents('form').find('.comments').val();
            formData.carMarkUser = $(this).parents('form').find('.carMarkUser').val();
			formData.formtype = formtype;
			formData.file = $(this).parents('form').find('.file-link').html();
			formData.carMark = $(this).parents('form').find('.select-car-mark').val();
			formData.carModel = $(this).parents('form').find('.select-car-model').val();
			formData.carYear = $(this).parents('form').find('.select-car-year').val();

			//utm
			$('.utm_campaign').text($_GET["utm_campaign"]);
			if ($_GET["utm_campaign"] != undefined) {
				formData.utmCampaign = $_GET["utm_campaign"]
			}
			$('.utm_term').text($_GET["utm_term"]);
			if ($_GET["utm_term"] != undefined) {
				formData.utmTerm = $_GET["utm_term"]
			}
			$('.utm_source').text($_GET["utm_source"]);
			if ($_GET["utm_source"] != undefined) {
				formData.utmSource = $_GET["utm_source"]
			}
			$('.utm_medium').text($_GET["utm_medium"]);
			if ($_GET["utm_medium"] != undefined) {
				formData.utmMedium = $_GET["utm_medium"]
			}

			//идентификатор цели метрики
			var yaTarget = $(this).parents('form').data('target');
			//чистим форму
			function clearForm () {
                $(this).removeClass('valid-for-file-upload');
                $('input:not(":checkbox"), textarea, select').val('');
                $('.form-group').removeClass('has-success').removeClass('has-error');
                formtype = '';
            };
            $thisText = $(this).text();
            $thisBtn.addClass('disabled').text('Отправка...')
 
            $.ajax({ //отправляем аяксом
                url:'php/mail.php',
                type:'POST',
                data:'jsonData=' + $.toJSON(formData),
                success: function() {
                    $('.submit-form-loading').fadeOut();
                    $('.submit-form-error').fadeOut();
                    magnificPopup.close();
                    setTimeout(function() {
                        $('.thank-you-btn').magnificPopup({
                            type: 'ajax',
                            removalDelay: 500, 
                            ajax: {
                              settings: null,
                              cursor: 'mfp-ajax-cur',
                              tError: '<a href="%url%">Контент</a> не может быть загружен.',
                            },
                            callbacks: {
                                beforeOpen: function() {
                                   this.st.mainClass = 'mfp-zoom-in';
                                },
                            },
                            midClick: true
                        }).magnificPopup('open');
                    }, 501);
                    $thisBtn.removeClass('disabled').text($thisText);
                    clearForm ();
                    reachGoalFunc(yaTarget);
                    reachGoalFunc(obwee_koli4estvo);
 
                },
                error: function() {
                    alert('При отправке данных произошла ошибка, попробуйте снова.');
                    $thisBtn.removeClass('disabled').text($thisText);
                    clearForm ();
                }
            }); 
        }
    });
});

Вот на текущий момент файл mail.php

<?php

    $recepient = "online@yandex.ru";
    $pagetitle = "Новая заявка с сайта \"$sitename\"";
    if (isset($_POST['notEmpty'])) {$name = $_POST['notEmpty'];}
    if (isset($_POST['notEmpty2'])) {$name = $_POST['notEmpty2'];}
    if (isset($_POST['notEmpty3'])) {$name = $_POST['notEmpty3'];}
    if (isset($_POST['notEmpty4'])) {$name = $_POST['notEmpty4'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    $message = "Имя отправителя: $notEmpty \nМарка авто: $notEmpty2 \nМодель авто: $notEmpty3 \nГод выпуска: $notEmpty4 \nТелефон: $phone";
    $send = mail($recepient, $pagetitle, $message, "Content-type: text/plain; charset=\"utf-8\"\n From: $recepient");
?>

 

Приходит следующее содержание сообщения на почту:

Имя отправителя:
Марка авто:
Модель авто:
Год выпуска:
Телефон:

Уважаемые мастера, подскажите пожалуйста, почему письма приходят пустые? Что я не так сделал?

Link to comment
Share on other sites

  • 0
5 часов назад, it-seo77 сказал:

Как всегда чувствовал, что тут ловить нечего, зря только время потерял, никакой помощи не жди, одна лишь критика, набор кармы, мерзость и всё. Спасибо вам всем!

Простите, у Вас со зрением как?

Если вы не понимаете смысла того, что я Вам написал, а именно

12 часа назад, BrusSENS сказал:

Далее, что говорит 


var_dump($_POST);

то уж простите, но тут Вам никто не сможет помочь. Немного только поясню: нужен результат выполнения функции var_dump, аргументом которой является массив $_POST. Как объяснить подробнее - не имею понятия... Вы либо не видите, что Вам тут пишут, либо не желаете видеть... А обижаться на всех, что все такие плохие и не помогают - так Вы хоть элементарные понятия получите о том, что Вы пытаетесь использовать, я Вам уже написал, на что стоит обратить внимание при работе с PHP в первую очередь, но Вы только жалуетесь. Прекращайте жаловаться, предоставляйте адекватную информацию, которую попросили Вас уточнить (var_dump($_POST), будь он неладен), и будем тогда решать проблемы по мере их поступления.

P.S.: Switch74 в принципе Вам правильно объяснил.

Link to comment
Share on other sites

  • 0
2 часа назад, BrusSENS сказал:

Далее, что говорит 


var_dump($_POST);

Извиняюсь, вообще не знал как вызывается подобная функция. Залил в файл обработчик mail.php следующий код:

<?php
    echo "<pre>";
    var_dump ($_REQUEST);
    echo "<pre>";
?>

Ответ через запрос: http://site.ru/php/mail.php

Выдал ответ:

array(12) {
  ["_ym_uid"]=>
  string(19) "1481970163743581687"
  ["jv_enter_ts_DCNb0JGhkq"]=>
  string(13) "1481970164246"
  ["jv_visits_count_DCNb0JGhkq"]=>
  string(1) "1"
  ["jv_close_time_DCNb0JGhkq"]=>
  string(13) "1481980481861"
  ["jv_pages_count_DCNb0JGhkq"]=>
  string(2) "23"
  ["__d1e946f4e67db4980b2e71a1"]=>
  string(2) "{}"
  ["__leadback_guid_d1e946f4e67db4980b2e71a1"]=>
  string(92) "{"guid":"83436535-1acd-43b1-aec2-f3b8315b8595","converted":false,"t":3676,"l":1482016658876}"
  ["__d83de59e102270c5aa65949d"]=>
  string(2) "{}"
  ["_ym_isad"]=>
  string(1) "2"
  ["__leadback_guid_d83de59e102270c5aa65949d"]=>
  string(94) "{"guid":"d96b0737-66ac-422e-b7cd-ff644f13e484","converted":false,"t":138728,"l":1482479852233}"
  ["_ga"]=>
  string(27) "GA1.2.1116388961.1482012889"
  ["__leadback_d83de59e102270c5aa65949d"]=>
  string(386) "{"widget_key":"d83de59e102270c5aa65949d","user_id":"8014","active":true,"night_mode":true,"catch_on_exit":true,"catch_by_timer":false,"catch_by_timer_time":30,"allow_multiple_conversions":false,"timeout":1440,"callback_time":27,"float_button":true,"mobile_button":true,"country":"ru","lang":"ru-ru","position":"bottom:50px; right:50px;","chat":"0","chat_uid":0,"chat_id":0,"status":"1"}"
}

 

7 часов назад, Switch74 сказал:

1. $sendfrom вы не закодировали
2. $subject = "Новая заявка"; удалил, т.е. вы сейчас кодируете пустую строку.

Убрал данные значения. Отредактировал форму:

<?php

    $recepient = "online@yandex.ru";
    $pagetitle = "Новая заявка с сайта \"$sitename\"";
    if (isset($_POST['notEmpty'])) {$name = $_POST['notEmpty'];}
    if (isset($_POST['notEmpty2'])) {$name = $_POST['notEmpty2'];}
    if (isset($_POST['notEmpty3'])) {$name = $_POST['notEmpty3'];}
    if (isset($_POST['notEmpty4'])) {$name = $_POST['notEmpty4'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    $message = "Имя отправителя: $notEmpty \nМарка авто: $notEmpty2 \nМодель авто: $notEmpty3 \nГод выпуска: $notEmpty4 \nТелефон: $phone";
    $send = mail($recepient, $pagetitle, $message, "Content-type: text/plain; charset=\"utf-8\"\n From: $recepient");
?>
7 часов назад, Switch74 сказал:

3. Что это за форма такая
<form data-type="Выездная проверка автомобиля экспертом" data-target="podborService1" class="form">
на сколько я помню форма без указания method отправляет данные через GET, а вы их смотрите в POST

Данный файл modal-service1.html который располагается в корне сайта, вызывает выплывающую форму обратной связи.

На сайте три формы обратной связи, одна располагается на странице, две другие формы выплывают при нажатии на кнопки Оставить заявку и Заявка на выкуп авто онлайн.

Вот первая форма index.php

<h4>Заявка на выкуп авто онлайн</h4>
                            <p></p>
                        </div>
                        <div class="form-content">
                            <div class="form-group">
                                <input type="text" name="notEmpty" class="form-control name" placeholder="Ваше имя">
                            </div>
							<div class="form-group">
                                <input type="text" name="notEmpty2" class="form-control name" placeholder="Марка авто">
                            </div>
							<div class="form-group">
                                <input type="text" name="notEmpty3" class="form-control name" placeholder="Модель авто">
                            </div>
							<div class="form-group">
                                <input type="text" name="notEmpty4" class="form-control name" placeholder="Год выпуска">
                            </div>
                            <div class="form-group">
                                <input type="text" name="phone" class="form-control required phone" placeholder="Ваш телефон *">
                            </div>

                            <a href="#" class="submit btn btn-success">
                                Отправить заявку
                            </a>
                        </div>
                    </form>

С неё так же как и с двух других форм обратной связи приходят пустые сообщения:

Имя отправителя:
Марка авто:
Модель авто:
Год выпуска:
Телефон:

Edited by it-seo77
Link to comment
Share on other sites

  • 0

Да господи... Вас не смущает, что Вы отправляете непонятно как данные формы?!

var yourForm = $('#your_form_id').serialize();
$.ajax({
  type: 'POST',
  url: 'yourfile.php',
  data: yourForm,
});

Отправляйте правильно данные, тогда и будет у Вас результат, а Вы отправляете Json и ожидаете $_POST в PHP обработчике...

Edited by BrusSENS
Link to comment
Share on other sites

  • 0
3 минуты назад, BrusSENS сказал:

Да господи... Вас не смущает, что Вы отправляете непонятно как данные формы?!


var yourForm = $('#your_form_id'). serialize();
$.ajax({
  type: 'POST',
  url: 'yourfile.php',
  data: yourForm,
});

Отправляйте правильно данные, тогда и будет у Вас результат, а Вы отправляете Json и ожидаете $_POST в PHP обработчике...

Как правильно отправить данный запрос?В какой файл закатать данную функцию?

Link to comment
Share on other sites

  • 0
1 минуту назад, it-seo77 сказал:

Как правильно отправить данный запрос?В какой файл закатать данную функцию?

А чем пример в предыдущем моём сообщении не устраивает?

Link to comment
Share on other sites

  • 0
1 минуту назад, BrusSENS сказал:
2 минуты назад, it-seo77 сказал:

Как правильно отправить данный запрос?В какой файл закатать данную функцию?

А чем пример в предыдущем моём сообщении не устраивает?

Данный код мы куда заливаем?В файл mail.php после обработки данных?

Link to comment
Share on other sites

  • 0
7 минут назад, it-seo77 сказал:

Данный код мы куда заливаем?В файл mail.php после обработки данных?

Причём тут mail.php??? Вы хотите отправить форму по ajax, так и делайте это

var yourForm = $('#your_form_id');
yourForm.on('submit', function(event){
    event.preventDefault();
    $.ajax({
        type: 'POST',
        url: 'yourfile.php',
        data: yourForm.serialize(),
    });
});

 

Edited by BrusSENS
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy