За последние 24 часа нас посетили 17680 программистов и 1709 роботов. Сейчас ищут 1758 программистов ...

Помогите с формой обратной связи

Тема в разделе "Работа с почтой", создана пользователем koltsovop, 25 сен 2016.

  1. koltsovop

    koltsovop Новичок

    С нами с:
    25 сен 2016
    Сообщения:
    10
    Симпатии:
    0
    Помогите пожалуйста с формой обратной связи.
    Полностью устраивает форма обратной связи вот её код,
    но при отправке письма письмо не отправляется
    Отправляю, но пишет в новом окне
    Ой, что-то пошло не так"
    соответственно письмо не приходит. В чём может быть проблема? и ещё вопрос как сделать чтобы писалось не в новом окне а на этой же страничке где кнопка отправить. Помогите пожалуйста буду очень признателен.
    Контактная форма лежит на серваке путь её я указываю верно. form.php

    PHP:
    1. <meta http-equiv='refresh' content='1; url=тут вставляю адрес сайта'>
    2. <meta charset="UTF-8" />
    3. <?php
    4. if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
    5. if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
    6. if (isset($_POST['temma'])) {$temma = $_POST['temma']; if ($temma == '') {unset($temma);}}
    7. if (isset($_POST['massage'])) {$massage = $_POST['massage']; if ($massage == '') {unset($massage);}}
    8. if (isset($name) && isset($email) && isset($temma) && isset($massage)){
    9. $address = "тут почта";
    10. $mes = "Имя: $name \nE-mail: $email \nТема: $temma \nТекст: $massage";
    11. $send = mail ($address,$temma,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
    12. if ($send == 'true')
    13. {echo "Сообщение отправлено";}
    14. else {echo "Ой, что-то пошло не так";}
    15. }
    16. else
    17. {
    18. echo "Заполните все поля";
    19. }
    20. ?>
    Контактная форма лежит на серваке путь её я указываю верно. form.php
    затем я вставляю в html страницу html код
    HTML:
    1. <form action="/тут добавляю контактную форму">
    2.  
    3. Имя<input class="inp" style="width: 30%;" name="name" type="text" />
    4.  
    5. E-mail:<input class="inp" style="width: 30%;" name="email" type="text" />
    6.  
    7. Тема сообщения<input class="inp" style="width: 30%;" name="temma" type="text" />
    8.  
    9. Ваш текст:
    10. <textarea class="inp" style="width: 80%;" cols="1" name="massage" rows="5"></textarea>
    11.  
    12. <input class="inp" type="submit" value="Отправить" />
    13.  
    14. </form>
     
    #1 koltsovop, 25 сен 2016
    Последнее редактирование модератором: 25 сен 2016
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    лучше перейти на PHPMailer, там хоть есть отладка, будет проще понять, что случилось

    Можно отправить без перезагрузки страницы используя AJAX, на javascript есть хорошая библиотека jquery, с помощью неё можно и ajax запрос отправить

    Без перезагрузки страницы:

    PHP:
    1. <?php
    2. header('Content-Type: text/html; charset=utf-8');
    3.  
    4. if($_SERVER['REQUEST_METHOD'] == 'POST') {
    5.     $required_fields = [
    6.         'name' => 'Имя',
    7.         'email' => 'Электро почта',
    8.         'password' =>'Пароль',
    9.     ];
    10.  
    11.     $errors = array_diff_key($required_fields, array_filter($_POST, function($var) {
    12.         return !empty($var);
    13.     }));
    14.  
    15.     if (is_array($errors) && count($errors)>0) {
    16.         echo 'Заполните поле:<br>';
    17.         foreach ($errors as $key => $value) {
    18.             echo $value.'<br>';
    19.         }
    20.     } else {
    21.         // тут делаем отправку почты
    22.         echo '<h1>Письмо улетело!</h1>';
    23.     }
    24.     exit;
    25. }
    26.  
    27. ?>
    28. <!DOCTYPE html>
    29. <html>
    30. <head>
    31.     <title>FeedBack</title>
    32. </head>
    33. <body>
    34.     <div id="result"></div>
    35.  
    36.     <form id="mail" action="<?=$_SERVER['PHP_SELF']?>" method="POST">
    37.         Name: <input type="name" name="name"><br>
    38.         Email: <input type="name" name="email"><br>
    39.         Password: <input type="password" name="password"><br>
    40.         <input type="submit" value="Отправить голубем">
    41.     </form>
    42.  
    43.  
    44.     <script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    45.     <script type="text/javascript">
    46.     $(function() {
    47.         $( '#mail' ).on( 'submit', function() {
    48.             event.preventDefault();
    49.             var formData = new FormData($('#mail')[0]);
    50.             var jqxhr = $.ajax({
    51.                 url: '<?=$_SERVER['PHP_SELF']?>',
    52.                 data: formData,
    53.                 type: 'POST',
    54.                 contentType: false,
    55.                 processData: false,
    56.             })
    57.             .done(function(result) {
    58.                 $('#result').html(result);
    59.             })
    60.             .fail(function() {
    61.                 $('#result').html('<h1>Ошибка, голуби спят.</h1>');
    62.             });
    63.  
    64.         });
    65.     });
    66.     </script>
    67. </body>
    68. </html>
     
  3. kolesnik.oleg

    kolesnik.oleg Новичок

    С нами с:
    12 янв 2017
    Сообщения:
    9
    Симпатии:
    0
    Ты это, походу, по Попову пишешь. Твой скрипт устроен так, что если хоть одно из полей формы не заполнено - будет ошибка. Ты при тестировании точно все поля заполняешь? Выведи через echo содержимое всех переменных НЕПОСРЕДСТВЕННО ПЕРЕД отправкой формы. И еще: вот пример с PHP.net:
    PHP:
    1. $headers = 'From: webmaster@example.com' . "\r\n" .  'Reply-To: webmaster@example.com' . "\r\n" .  'X-Mailer: PHP/' . phpversion();
    . Обрати внимание на комбинации одинарных и двойных кавычек.
     
    #3 kolesnik.oleg, 10 мар 2017
    Последнее редактирование модератором: 10 мар 2017