Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] форма обратной связи на php и ajax (http://forum.oszone.net/showthread.php?t=340575)

Ximi 16-05-2019 16:32 2872036

форма обратной связи на php и ajax
 
Здравствуйте, может кто нибудь написать mail.php для этого скрипта?
script.js
PHP код:

$(function() {
    $(
'#square').keyup(function(){
        var 
square = $(this).val();
        $(
'#price').val(square*1100)
    });
    $(
'#price').keyup(function(){
        var 
price = $(this).val();
        $(
'#square').val((price/1100).toFixed(2))
    });

    $(
'.ask-blocks .item h4').click(function(){
        var 
thisH4 = $(this),
            
thisSpan = $('div', $(this).parent()),
            
outherH4 = $('.ask-blocks .item h4').not(thisH4),
            
outherSpan = $('.ask-blocks .item div').not(thisSpan);
        
outherH4.removeClass('active');
        
outherSpan.hide().removeClass('active');
        
thisH4.toggleClass('active');
        
thisSpan.fadeToggle().toggleClass('active');
    });
    
ymaps.ready(init);
    var 
myMap
        
myPlacemark;

    function 
init(){ 
        if( ($(
window).width() <= 767)  ) {
            
myMap = new ymaps.Map("map", {
                    
center: [55.7539940037.62209300],
                    
zoom8
                
}); 
        } else {
            
myMap = new ymaps.Map("map", {
                
center: [55.7539940037.62209300],
                
zoom8
            
});             
        }

        
myPlacemark = new ymaps.Placemark([55.7539940037.62209300], {
            
hintContent'Алматы',
            
balloonContent'г. Алматы, пр. Достык, д. 291/3'
        
});
        
myMap.geoObjects.add(myPlacemark);
    }
    $(
'.up').click(function(e){
        
e.preventDefault();
        $(
'html,body').animate({
          
scrollTop0
        
}, 1000);
    });
    $(
"input.tel").click(function(){
        $(
this).val('+7');
    });
    $(
window).scroll(function() {
        var 
pos 86;
        if( ($(
window).width() <= 1199) || ($(window).width() >= 768) ) {
            
pos 150;
        }
        if( ($(
window).width() <= 767) || ($(window).width() >= 576) ) {
            
pos 150;
        }
        if($(
window).width() <= 575) {
            
pos 290;
        }

        if($(
this).scrollTop() >= pos) {
            $(
'nav').addClass('stickytop');
        }
        else{
            $(
'nav').removeClass('stickytop');
        }
    });
    $(
'.smoothScroll').click(function(event) {
        
event.preventDefault();
        var 
href=$(this).attr('href');
        var 
target=$(href);
        var 
top=target.offset().top;
        $(
'html,body').animate({
          
scrollToptop
        
}, 1000);
    });

    $(
'.modal').on('hidden.bs.modal', function (e) {
      $(
'input:not(.type)', $(this)).val('');
    });
    $(
'form').submit(function(e){
        
e.preventDefault();
        var 
form_data = {
            
'name':$(".name", $(this)).val(),
            
'tel':$(".tel", $(this)).val(),
            
'price':$("#price", $(this)).val(),
            
'square':$("#square", $(this)).val(),
            
'type':$(".type", $(this)).val()
        };
        $.
ajax({
          
type"POST",
          
url"mail.php",
          
dataform_data,
          
success: function(){
            $(
'.modal').modal('hide');
            
setTimeout(function() {
                $(
'.success').fadeToggle();
            }, 
1000);
            
setTimeout(function() {
                $(
'.success').fadeToggle();
            }, 
2500);
          },
          
error: function() {
              
alert("Произошла какая то ошибка!");
          }
        }); 
    });
    new 
WOW().init();
}); 


Sham 17-05-2019 02:25 2872088

Есть куча типовых скриптов под эти цели. Ключевые слова "php post mail"

Ximi 17-05-2019 16:08 2872139

Спасибо, посмотрю

Ximi 17-05-2019 17:51 2872154

Sham, все получилось, спасибо. Но 1 вопрос остался) из поля .name. кирилицу присылает иероглифами, куда рыть не подскажите?)

// Или это как-то связанно с модулем sendmail на wamp? Я проверял так.

Скрытый текст
PHP код:

<?php
$name 
$_POST['name'];
$tel $_POST['tel'];
$price $_POST['price'];
$square $_POST['square'];
$type $_POST['type'];
if (
mail("XXX@gmail.com""Заявка с сайта""Имя:".$name" . Телефон: ".$tel" Цена: ".$price" Площадь: " .$square" Тип заявки: ".$type ,"From: wa6@gmail.com \r\n"))
 {     echo 
"сообщение успешно отправлено"
} else { 
    echo 
"при отправке сообщения возникли ошибки";
}
?>


Sham 17-05-2019 21:04 2872171

1. Переменные извне нужно проверять хотя бы на размер и правильность, отсутствие лишних \r\n.
2. utf-8 в открытом виде вставлять нельзя. Текст разбивается побайтово, а символы многобайтовые. Ищите примеры с Content-Transfer-Encoding, либо перекодируйте в cp1251 (iconv() etc.). Кодировка php-файла тоже имеет значение.
3. echo там не требуется. Чтобы сработало событие error у клиента, ему нужно отправить в случае ошибки не-200 (503 к примеру) http_response_code(503)

Ximi 17-05-2019 23:21 2872183

Sham,
Цитата:

Цитата Sham
Кодировка php-файла тоже имеет значение. »

Начал с этого пункта, преобразовал php в utf-8, и появилась кириллица. Спасибо! ... эхо убрал)


Время: 15:58.

Время: 15:58.
© OSzone.net 2001-