A
A
Ark Tarusov2016-06-06 06:27:42
PHP
Ark Tarusov, 2016-06-06 06:27:42

What is wrong with php email send code?

Problem:
When you click on the submit button of the feedback form, the page is reloaded with the data displayed in the address bar and that's it.
And my own message doesn't come to the mail -_-
Here is the form code

<form id="form">
               <input name="name" placeholder="Ф.И.О." class="textbox" required />
               <input name="phone" placeholder="Телефон:" class="textbox" required />
               <input name="email" placeholder="Email:" class="textbox" type="email" required />
               <textarea name="messag" rows="4" cols="50"  placeholder="Введите ваше сообщение и мы обязательно с вами свяжемся!" class="message" required></textarea>
               <input class="button" type="submit" value="Отправить" />
            </form>

here is js
<script type="text/javascript">
    $(document).ready(function(){
      $("#form").submit(function() { //устанавливаем событие отправки для формы с id=form
          var form_data = $(this).serialize(); //собираем все данные из формы
          $.ajax({
          type: "POST", //Метод отправки
          url: "send.php", //путь до php фаила отправителя
          data: form_data,
          success: function() {
               //код в этом блоке выполняется при успешной отправке сообщения
               alert("Ваше сообщение отправлено!");
          });
      });
    });    
  </script>


Here is send.php file
<?
if((isset($_POST['name'])&&$_POST['name']!="")&&(isset($_POST['phone'])&&$_POST['phone']!="")&&(isset($_POST['email'])&&$_POST['email']!="")&&(isset($_POST['messag'])&&$_POST['messag']!="")){ //Проверка отправилось ли наше поля name и не пустые ли они
        $to = '[email protected]'; //Почта получателя, через запятую можно указать сколько угодно адресов
        $subject = 'Обратный звонок'; //Заголовок сообщения
        $date=date("d.m.y"); // число.месяц.год 
    $time=date("H:i"); // часы:минуты:секунды 
    $message = '
                <html>
                    <head>
                        <title>'.$subject.'</title>
                    </head>
                    <body>
      <p>Сообщение: '.$_POST['messag'].'</p>
                        <p>Имя: '.$_POST['name'].'</p>
                        <p>Телефон: '.$_POST['phone'].'</p>     
      <p>Email: '.$_POST['email'].'</p>   						
                    </body>
                </html>'; //Текст нашего сообщения можно использовать HTML теги
        $headers = 'MIME-Version: 1.0' . "\r\n";
    $headers .= "Content-type: text/html; charset=utf-8 \r\n"; //Кодировка письма
        $headers .= "From: Отправитель <.$_POST['email'].>\r\n"; //Наименование и почта отправителя
    
    $f = fopen("message.txt", "a+"); 
    fwrite($f," \n $date $time Сообщение от $name"); 
    fwrite($f,"\n $message "); 
    fwrite($f,"\n ---------------"); 
    fclose($f); 


    mail($to, $subject, $message, $headers); //Отправка письма с помощью функции mail
    

}
?>


This is the third variation of js and php that I have tried.
I created this file for testing.
<?
   mail("[email protected]", "Шествие лемингов", "Тушканчики лемингуют!");
?>

The message has arrived.
What is the actual reason?

PS By the way, the code for creating a txt file with messages on the hosting is inserted into the php file. and in this file and = also nothing is entered -_-

Answer the question

In order to leave comments, you need to log in

3 answer(s)
O
Oleg, 2016-06-06
@kreo_OL

$(document).ready(function(){
  $("#form").submit(function() {
    $.ajax({
      type: "POST",
      context: this,
      url: "send.php",
      data: $(this).serialize(),
      error: function() {
        alert("Ошибка!");
      },
      success: function() {
        alert("Ваше сообщение отправлено!");
      }
    });
    return false;
  });
});

D
Denis Bukreev, 2016-06-06
@denisbookreev

First you need to determine where the error is
. Without conditions, the php file, if you run it, will the message come?
Are there any errors about js in the console?
The form will reload to prevent:

$("#form").submit(function() { //устанавливаем событие отправки для формы с id=form
          var form_data = $(this).serialize(); //собираем все данные из формы
          $.ajax({
          type: "POST", //Метод отправки
          url: "send.php", //путь до php фаила отправителя
          data: form_data,
          success: function() {
               //код в этом блоке выполняется при успешной отправке сообщения
               alert("Ваше сообщение отправлено!");
          });
          return false; // ПРЕДОТВРАЩАЕМ ПЕРЕЗАГРУЗКУ
      });

R
Ruslan, 2016-06-06
@Gavr23

$("#form").submit(function(event){
    event.preventDefault();
//далее ваш код
});

Try like this

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question