Не нравятся результаты поиска? Попробуйте другой поиск!

Как сделать что бы админу через форму обратной связи приходило сообщение с полем от куда (с какой страницы) было отправлено сообщение?


     27.04.2016    Общие вопросы, Модули    510

вопрос
Здравствуйте.
Прошу помощи.
Есть форма обратной связи , к ней нужно добавить поле от куда (с какой страницы) было отправлено сообщение.
Это поле должно находится в шаблоне сообщения которое приходит администратору на мыло.
Желательно сделать данное действие именно с этой формой , уж очень она мне нравится.


Вот JS:


$(document).ready(function(){
    $('.closemod').click(function(){    $('.reveal-modal-bg').click();    });
    $('input[type="text"]').focusout(function(){

        validate('fio');
        validate('tel');
        validate('email');
    });

    $('#btn').click(function(){

        validate('fio');
        validate('tel');
        validate('email');

        if($('input[name="fio"]').hasClass('valid') &&
           $('input[name="tel"]').hasClass('valid') &&
           $('input[name="email"]').hasClass('valid')
           ){

                var fio   = $('input[name="fio"]').val();
                var tel   = $('input[name="tel"]').val();
                var email = $('input[name="email"]').val();
                var messa = $('input[name="messa"]').val();
                $('input[name="messa"]').removeClass('invalid');
                $('input[name="messa"]').addClass('valid');
                $.post("/ajax2/mail.php",
                                  { fio: fio, tel: tel, email: email, messa: messa },
                                    function (data){
                                        if(data == 'true'){
                                            $('.reveal-modal-bg').click();
                                            $('[data-reveal-id=myMod]').click();
                                        }else{
                                            $('.reveal-modal-bg').click();
                                            $('[data-reveal-id=myMod2]').click();

                                        }
                                    },
                                    "text"
                                    );

            }
            return false;
    });

});

function validate(nameField){

   var currElem = 'input[name="'+ nameField +'"]';

    if($(currElem).val() == '' && $(currElem).attr('required') == 'required'){

            if($(currElem).hasClass('valid')){

                $(currElem).removeClass('valid')
            }


            $(currElem).addClass('invalid');

            $(currElem).next('p').text('*Это поле не должно быть пустым');


        }else{

            if($(currElem).val() != ''){

                var val = $(currElem).val();

                if(nameField === 'fio'){
                   regexp = /^[А-Яа-яЁё\ ]+$/i;
                }
                if(nameField === 'tel'){
                   regexp = /^[\d]+[\d\(\)\ -]+[\d]+$/;
                }
                if(nameField === 'email'){
                   regexp = /^[\w]{1}[\w-\.]*@[\w-]+\.[a-z]{2,4}$/i;
                }

                if(regexp.test(val)){

                    if($(currElem).hasClass('invalid')){

                        $(currElem).removeClass('invalid');
                        $(currElem).next('p').text('');
                    }

                    $(currElem).addClass('valid');

                }else{

                    if($(currElem).hasClass('valid')){

                        $(currElem).removeClass('valid');
                    }

                    $(currElem).addClass('invalid');

                    if(nameField === 'fio'){
                        var text  = '*Допускаются только русские буквы';
                    }
                    if(nameField === 'tel'){
                        var text  = '*Неверный формат номера телефона';
                    }
                    if(nameField === 'email'){
                        var text  = '*Неверный формат электронной почты';
                    }

                    $(currElem).next('p').text(text);
                }
         }
    }


}


Вот PHP:


<?php
$fio   = $_POST['fio'];
$email = $_POST['email'];
$tel   = $_POST['tel'];
$messa   = $_POST['messa'];
$mail    = "мое мыло";
$subject = "Тема сообщения";
$headers = "";
$text =  "От кого: $fio\n

Email: $email\n

Телефон: $tel\n

Сообщение: $messa";
$hostmail = explode('@', $mail);
if($hostmail[1] != 'gmail.com'){
    $text      = iconv('utf-8', 'windows-1251', $text);
    $subject   = iconv('utf-8', 'windows-1251', $subject);
    $headers   = iconv('utf-8', 'windows-1251', $headers);
}
if (mail($mail, $subject, $text, $headers)) {} else {echo 'false';exit();}
$to = $email;
$subject = "Тема сообщения которое приходит отправителю.";
$msg = "сообщение которое приходит отправителю.";
$un        = strtoupper(uniqid(time()));$charset='windows-1251';
$head  .= "Mime-Version: 1.0\r\n";$head  .= "Content-Type:multipart/mixed;";
$head  .= "boundary=\"----------".$un."\"\n\n";
$body   = "------------".$un."\nContent-Type:text/html; charset=$charset\r\n";
$body   .= "Content-Transfer-Encoding: 8bit\n\n".$msg."\n\n";
if (file_exists($adrfile)) {
$body   .= "------------".$un."\n";
$body   .= "Content-Type: ".pathinfo($adrfile, PATHINFO_EXTENSION).";";
$body   .= "name=\"".$namefile."\"\n";
$body   .= "Content-Transfer-Encoding:base64\n";
$body   .= "Content-Disposition:attachment;";
$body   .= "filename=\"".$namefile."\"\n\n";
$body   .= chunk_split(base64_encode(file_get_contents($adrfile)))."\n";}
mail( $to, $subject, $body, $head );

echo 'true';exit();
?>


Помогите с поправкой кода для реализации моей задумки.
Заранее благодарю.

Ответа пока нет


Комментарии пользователей (4)

vitnet
218

2174 | 930

vitnet - 27 апреля 2016 12:39 - Эксперт

jS
{ src: document.URL, fio: fio, ... }

PHP
<?php

$url = isset($_POST['src']) ? $_POST['src'] : 'null';
$fio   = isset($_POST['fio']) ? $_POST['fio'] : 'null';
$email = isset($_POST['email']) ? $_POST['email'] : 'null';
$tel   = isset($_POST['tel']) ? $_POST['tel'] : 'null';
$messa   = isset($_POST['messa']) ? $_POST['messa'] : 'null';
$mail    = "мое мыло";
$subject = "Тема сообщения";
$headers = "";

$text =  "От кого: $fio\nEmail: $email\nТелефон: $tel\nСтраница: $url\nСообщение: $messa";

$hostmail = explode('@', $mail);

if( $hostmail[1] != 'gmail.com' ) {
    $text = iconv('utf-8', 'windows-1251', $text);
    $subject = iconv('utf-8', 'windows-1251', $subject);
    $headers = iconv('utf-8', 'windows-1251', $headers);
}

if( mail($mail, $subject, $text, $headers) ) die("true");
else die("false");

?>

Belka
2

Belka - 27 апреля 2016 13:31 - Юзер

Спасибо. Видимо я что то не так сделал . но мне на мыло приходит строка (значение null)
И в вашей поправке нехватает нужной мне части (авто ответа отправителю)

сделал так , добавил только это


$url = isset($_POST['src']) ? $_POST['src'] : 'null';
$fio   = isset($_POST['fio']) ? $_POST['fio'] : 'null';
$email = isset($_POST['email']) ? $_POST['email'] : 'null';
$tel   = isset($_POST['tel']) ? $_POST['tel'] : 'null';
$messa   = isset($_POST['messa']) ? $_POST['messa'] : 'null';

$text =  "$url\n $fio\n $email\n $tel\n $messa";


в JS получилось так


var fio   = $('input[name="fio"]').val();
                var tel   = $('input[name="tel"]').val();
                var email = $('input[name="email"]').val();
                var messa = $('input[name="messa"]').val();
                $('input[name="messa"]').removeClass('invalid');
                $('input[name="messa"]').addClass('valid');
                $.post("/ajax2/mail.php",
                                  { src: document.url, fio: fio, tel: tel, email: email, messa: messa },
                                    function (data){
                                        if(data == 'true'){
                                            $('.reveal-modal-bg').click();
                                            $('[data-reveal-id=myMod]').click();
                                        }else{
                                            $('.reveal-modal-bg').click();
                                            $('[data-reveal-id=myMod2]').click();

                                        }
                                    },
                                    "text"

может что то дописать нужно так как в этой строке
{ src: document.url, fio: fio, tel: tel, email: email, messa: messa }
после двоеточия слова выделены отдельным цветом , а в src: document.url, не выделено ничего.
Извините за крабство , я просто совсем в JS неволоку)

vitnet
218

2174 | 930

vitnet - 27 апреля 2016 15:51 - Эксперт

У вас небольшая ошибка, console

Belka
2

Belka - 27 апреля 2016 16:05 - Юзер

Спасибо огромное))) вместо document.url, вставил document.location.href и заработало))
Только вот еще последний вопросик , что это может быть. Поле тема письма
$subject = "Тема сообщения";
; вот тут когда по русски пишу тему , ничего совсем не приходит. А когда по англ, приходит английский текст. Я то понял что с кодировкой что то не то, какие только кодировки не пробовал JS у меня на utf-8 это понятно , а вот файл mail.php должен быть в кодировке сайта , то есть windows-1251 , кодировал и в один и во второй формат , и не конает , по чему? И в чем дело , не подскажите?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы