Отправка данных с формы на email... как обычно

Тема в разделе "PHP", создана пользователем xoff, 14 июл 2014.

  1. xoff

    xoff

    Регистрация:
    2 сен 2013
    Сообщения:
    74
    Симпатии:
    13
    Как обычно не могу разобраться... Есть HTML код:
    HTML:
    <form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php" role="form">
                                <div class="row">
                                    <div class="col-sm-6">
                                        <div class="form-group">
                                            <input type="text" class="form-control" name="name" required="required" placeholder="Имя">
                                        </div>
                                    </div>
                                    <div class="col-sm-6">
                                        <div class="form-group">
                                            <input type="email" class="form-control" name="email" required="required" placeholder="Email адрес">
                                        </div>
                                    </div>
                                </div>
                                <div class="row">
                                    <div class="col-sm-12">
                                        <div class="form-group">
                                            <textarea name="message" id="message" required="required" class="form-control" rows="8" placeholder="Сообщение"></textarea>
                                        </div>
                                        <div class="form-group">
                                            <button type="submit" class="btn btn-danger btn-lg">Отправить</button>
                                        </div>
                                    </div>
                                </div>
                            </form>
    
    И PHP action:
    PHP:
    <?php
        header
    ('Content-type: application/json');
        
    $status = array(
            
    'type'=>'success',
            
    'message'=>'Email sent!'
        
    );

        
    $name = @trim(stripslashes($_POST['name']));
        
    $email = @trim(stripslashes($_POST['email']));
        
    $subject = @trim(stripslashes($_POST['subject']));
        
    $message = @trim(stripslashes($_POST['message']));

        
    $email_from $email;
        
    $email_to '[email protected]';

        
    $body 'Name: ' $name "\n\n" 'Email: ' $email "\n\n" 'Subject: ' $subject "\n\n" 'Message: ' $message;

        
    $success = @mail($email_to$subject$body'From: <'.$email_from.'>');

        echo 
    json_encode($status);
        die;
      
    На почту приходит:

    Name:

    Email:

    Subject:

    Message:

    И не появляется не где ничего... а вроде должно, потому что так можно тыкать тыкать и заспамить) Помогите пожалуйста.....

    С чего я взял что, что-то должно появлятся, просто перед формой есть код:
    <div class="status alert alert-success" style="display: none"></div>
    Тоесть я как понял после успешной отправки что-то должно выскачить)
     
  2. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.581
    Симпатии:
    1.482
  3. xoff

    xoff

    Регистрация:
    2 сен 2013
    Сообщения:
    74
    Симпатии:
    13
    Сделал вот:
    PHP:
    <?
    // ----------------------------конфигурация-------------------------- //
    $adminemail="[email protected]";  // e-mail админа
    $date=date("d.m.y"); // число.месяц.год
    $time=date("H:i"); // часы:минуты:секунды
    $backurl="/index.html";  // На какую страничку переходит после отправки письма
    //---------------------------------------------------------------------- //

    // Принимаем данные с формы
    $name=$_POST['name'];
    $email=$_POST['email'];
    $time=$_POST['time'];
    $msg=$_POST['message'];

    // Проверяем валидность e-mail
    if (!preg_match("|^([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is",
    strtolower($email)))
    {
      echo
    "<center>Вернитесь <a
    href='javascript:history.back(1)'><B>назад</B></a>. Вы
    указали неверные данные!"
    ;
      }
    else
    {
    $msg="
    Имя: 
    $name

    E-mail: 
    $email

    Сообщение: 
    $msg
    "
    ;

    // Отправляем письмо админу
    mail("$adminemail""$date $time Сообщение
    от 
    $name""$msg");

    print 
    "<script language='Javascript'><!--
    function reload() {location = \"
    $backurl\"}; setTimeout('reload()', 0);
    //--></script>
    $msg
    <p>Сообщение отправлено! Подождите, сейчас вы будете перенаправлены на главную страницу...</p>"
    ;
    exit;
    }
    ?>
    Не работает. Вообще ничего не приходит
     
  4. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.581
    Симпатии:
    1.482
    не нужно было брать ту кодяру. нужно почитать тему и прийти к выводу, что нужно заюзать phpmailer + там же примеры есть.
     
  5. xoff

    xoff

    Регистрация:
    2 сен 2013
    Сообщения:
    74
    Симпатии:
    13
    Я в php не особо шарю да и в html тоже не профессионал, поэтому разбираться это уйдет пол века) проще нету вариантов?
    --- Добавлено, 15 июл 2014 ---
    Ну почему не работает.............

    Я с аналогичного взял где работает код:
    PHP:
    <?php
    $haveError 
    false;
    if (isset(
    $_POST['name'])) {$name $_POST['name'];}
    if (isset(
    $_POST['email'])) {$email $_POST['email'];}
    if (isset(
    $_POST['message'])) {$message $_POST['message'];}


    $title"Новый сообщение с ///";
    $emailadr = array('//@gmail.com');
    $address implode(","$emailadr);
    $mes "Имя: $name \nEmail: $email \nСообщение: $message ";
    $send mail ($address,$title,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");

    ?>

    <html>
    <head>

    <body>
    <script>
    document.location.replace("http://.......ru/buy/done.html");
    </script>
    </body>
    </html>
     
    Последнее редактирование: 15 июл 2014
  6. Globe-Star

    Globe-Star ...

    Регистрация:
    7 май 2013
    Сообщения:
    421
    Симпатии:
    123
    PHP:
    <?php
    $sendto   
    "[email protected]";
    $usermail $_POST['email'];
    $content  nl2br($_POST['msg']);
    // Формирование заголовка письма
    $subject  "Новое сообщение";
    $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 .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Новое сообщение</h2>\r\n";
    $msg .= "<p><strong>От кого:</strong> ".$usermail."</p>\r\n";
    $msg .= "<p><strong>Сообщение:</strong> ".$content."</p>\r\n";
    $msg .= "</body></html>";

    // отправка сообщения
    if(@mail($sendto$subject$msg$headers)) {
        echo 
    "true";
    } else {
        echo 
    "false";
    }

    ?>
    HTML:
    <form id="contact" name="contact" action="#" method="post">
            <label for="email">Ваш E-mail</label>
            <input type="email" id="email" name="email" class="txt">
            <br>
            <label for="msg">Введите сообщение</label>
            <textarea id="msg" name="msg" class="txtarea"></textarea>
        
            <button id="send">Отправить E-mail</button>
        </form>
     
    xoff нравится это.
  7. xoff

    xoff

    Регистрация:
    2 сен 2013
    Сообщения:
    74
    Симпатии:
    13
    Поставил свой html код с твоим обработчиком вот изменения: HTML
    HTML:
    <form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php" role="form">
                                <div class="row">
                                    <div class="col-sm-6">
                                        <div class="form-group">
                                            <input type="text" class="form-control" name="name" required="required" placeholder="Имя">
                                        </div>
                                    </div>
                                    <div class="col-sm-6">
                                        <div class="form-group">
                                            <input type="email" class="form-control" name="email" required="required" placeholder="Email адрес">
                                        </div>
                                    </div>
                                </div>
                                <div class="row">
                                    <div class="col-sm-12">
                                        <div class="form-group">
                                            <textarea name="message" id="message" required="required" class="form-control" rows="8" placeholder="Сообщение"></textarea>
                                        </div>
                                        <div class="form-group">
                                            <button type="submit" class="btn btn-danger btn-lg">Отправить</button>
                                        </div>
                                    </div>
                                </div>
                            </form>
    PHP изменил так:
    PHP:
    <?php
    $sendto   
    "[email protected]";
    $name $_POST['name'];
    $usermail $_POST['email'];
    $content  nl2br($_POST['msg']);
    // Формирование заголовка письма
    $subject  "Новое сообщение";
    $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 .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Новое сообщение</h2>\r\n";
    $msg .= "<p><strong>Имя:</strong> ".$name."</p>\r\n";
    $msg .= "<p><strong>Email или телефон:</strong> ".$usermail."</p>\r\n";
    $msg .= "<p><strong>Сообщение:</strong> ".$content."</p>\r\n";
    $msg .= "</body></html>";

    // отправка сообщения
    if(@mail($sendto$subject$msg$headers)) {
        echo 
    "true";
    } else {
        echo 
    "false";
    }

    ?>
    На странице сработал какой-то скрипт походу тот который я писал див вылез: <div class="status alert alert-success" style="display: none"></div>
    Но пришло письмо снова вида:
    Новое сообщение
    Имя:

    Email или телефон:

    Сообщение:

    пустое тоесть)

    Еще нашел JS скрипт связан чем-то
    Код:
        //Ajax contact
        var form = $('.contact-form');
        form.submit(function () {
            $this = $(this);
            $.post($(this).attr('action'), function(data) {
                $this.prev().text(data.message).fadeIn().delay(3000).fadeOut();
            },'json');
            return false;
        });
     
    Последнее редактирование: 15 июл 2014
  8. Globe-Star

    Globe-Star ...

    Регистрация:
    7 май 2013
    Сообщения:
    421
    Симпатии:
    123
    PHP:
    <script type="text/javascript">
        function 
    validateEmail(email) {
            var 
    reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
            return reg.test(email);
        }

        $(document).ready(function() {
            $("
    .modalbox").fancybox();
            $("
    #contact").submit(function() { return false; });

           
            
    $("#send").on("click", function(){
                var 
    emailval  = $("#email").val();
                var 
    msgval    = $("#msg").val();
                var 
    msglen    msgval.length;
                var 
    mailvalid validateEmail(emailval);
               
                if(
    mailvalid == false) {
                    $(
    "#email").addClass("error");
                }
                else if(
    mailvalid == true){
                    $(
    "#email").removeClass("error");
                }
               
                if(
    msglen 4) {
                    $(
    "#msg").addClass("error");
                }
                else if(
    msglen >= 4){
                    $(
    "#msg").removeClass("error");
                }
               
                if(
    mailvalid == true && msglen >= 4) {
                    
    // если обе проверки пройдены
                    // сначала мы скрываем кнопку отправки
                    
    $("#send").replaceWith("<em>отправка...</em>");
                   
                    $.
    ajax({
                        
    type'POST',
                        
    url'sendmessage.php',
                        
    data: $("#contact").serialize(),
                        
    success: function(data) {
                            if(
    data == "true") {
                                $(
    "#contact").fadeOut("fast", function(){
                                    $(
    this).before("<p><strong>Успешно! Ваше сообщение отправлено  :)</strong></p>");
                                    
    setTimeout("$.fancybox.close()"1000);
                                });
                            }
                        }
                    });
                }
            });
        });
    </
    script>
     
  9. 8099

    8099

    Регистрация:
    25 июл 2014
    Сообщения:
    6
    Симпатии:
    1
  10. VladDnepr1989

    VladDnepr1989

    Регистрация:
    30 июл 2014
    Сообщения:
    0
    Симпатии:
    0
    Попробуй выяснить на каком этапе ошибка. Есть несколько точек это в самом начале PHP скрипта, после фильтрации, до отправки почты и после получения. Поставь debug вывод того что получаешь, может у тебя еще до отправки письма в переменных уже пусто