Простейшая форма отправки данных на почту при помощи HTML и PHP

Тип статьи:
Рецензия
Источник:

Одной из самых востребованных функций на сайте является форма заявки или заказа, данные из которой отправляются на почту владельцу сайта. Как правило такие формы являются простыми и состоят из двух трех полей для ввода данных. Как же создать такую форму заказа? Здесь потребуется использование языка разметки HTML и языка программирования PHP.

Язык разметки HTML сам по себе несложен, нужно всего лишь разобраться в том как и где ставить те или иные теги. С языком программирования PHP все немного сложнее.

Для программиста создать такую форму не составит труда, а вот HTML верстальщику может показаться сложным некоторые действия.

Создаем форму отправки данных в html

На этом этапе нужно создать файл form.php, в него добавить html код формы.

Первая строка будет следующей

<span style="color: rgb(79, 129, 189);"><form action="send.php" method="post"></span>

Это очень важный элемент формы. В нем мы указываем каким способом будут передаваться данные и какому файлу. В данном случае все передачется методом POST файлу send.php. Программа в этом файле соответственно должна принять данные, они будут содержаться в post массиве, и отправить их на указанный email адрес.

Вернемся к форме. Вторая строка будет содержать поле для ввода ФИО. Имеет следующий код:

<span style="color: rgb(79, 129, 189);"><input type="text" name="fio" placeholder="Укажите ФИО"></span>

Тип формы text, то есть пользователь сможет ввести или скопировать сюда текст с клавиатуры. Под параметром name содержится название формы. В данном случае это fio, именно под таким именем будет передаваться все, что пользователь введен в данноу поле. Параметр placeholder указывает на то, что будет записано в этом поле в виде пояснения.

Следующая строка:

<span style="color: rgb(79, 129, 189);"><input type="text" name="email" placeholder="Укажите e-mail"></span>

Здесь практически все то же самое, но имя для поля указано email, а пояснении указано, чтобы пользователь в эту форму ввел свой адресс электронной почты.

Следующей строкой будет кнопка "отправить":

<span style="color: rgb(79, 129, 189);"><input type="submit" value="Отправить"></span>

И последней строкой в форме будет тэг </form>

Теперь соберем все вместе.

<span style="color: rgb(79, 129, 189);"><form action="send.php" method="post"><br><input type="text" name="fio" placeholder="Укажите ФИО"><br><input type="text" name="email" placeholder="Укажите e-mail"><br><input type="submit" value="Отправить"><br></form></span>

Теперь сделаем так, чтобы поля в форме стали обязательными для заполнения. Имеем следующий код:

<span style="color: rgb(79, 129, 189);"><form action="send.php" method="post"><br><input type="text" name="fio" placeholder="Укажите ФИО" required><br><input type="text" name="email" placeholder="Укажите e-mail" required><br><input type="submit" value="Отправить"><br></form></span>

Создаем файл, принимающий данные из HTML формы

Это будет файл с именем send.php

В файле на первом этапе нужно принять данные из пост массива. Для этого создаем две переменные:

<span style="color: rgb(79, 129, 189);">$fio = $_POST['fio'];<br>$email = $_POST['email'];</span>

Перед названиями переменных в php ставиться знак $, в конце каждой строки ставиться точка с запятой. $_POST это массив в который передаются данный из формы. В форме html при этом указан метод отправки method="post". Так, приняты две переменные из формы html. Для целей защиты своего сайта нужно провести эти переменные через несколько фильтров - функций php.

Первая функция преобразует все символы, которые пользователь попытается добавить в форму:

<span style="color: rgb(79, 129, 189);">$fio = htmlspecialchars($fio);<br>$email = htmlspecialchars($email);</span>

При этом новые переменные в php не создаются, а используются уже имеющиеся. Что сделает фильтр, он преобразует символ "<" в '&lt;'. Также он поступить с другими символами, встречающимися в html коде.

Вторая функция декодирует url, если пользователь попытается его добавить в форму.

<span style="color: rgb(79, 129, 189);">$fio = urldecode($fio);<br>$email = urldecode($email);</span>

Третей функцией мы удалим пробелы с начала и конца строки, если таковые имеются:

<span style="color: rgb(79, 129, 189);">$fio = trim($fio);<br>$email = trim($email);</span>

Существуют и другие функции, позволяющие отфильтровать переменные php. Их использование зависит от того , насколько вы опасаетесь того, что злоумышленник попытается добавить программный код в данную форму отправки данных на почту html.

Проверка данных, передаваемых от HTML формы в файл PHP

Для того, чтобы проверить, работает ли этот код, передаются ли данные можно просто их вывести на экран при помощи функции echo:

<span style="color: rgb(79, 129, 189);">echo $fio;<br>echo "<br>";<br>echo $fio;</span>

Вторая строка здесь нужна для того, чтобы разделить вывод переменных php на разные строки.

Отправляем полученные данные из формы HTML на почту при помощи PHP

Для отправки данных на почту нужно воспользоваться функцией mail в PHP.

mail("на какой адрес отправить", "тема письма", "Сообщение (тело письма)","From: с какого email отправляется письмо \r\n");

Например, нужно отправить данные на email владельца сайта или менеджера example@mail.ru.

Тема письма должна быть понятной, а сообщение письма должно содержать то, что указал пользователь в HTML форме.

<span style="color: rgb(79, 129, 189);">mail("example@mail.ru", "Заявка с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: example2@mail.ru \r\n");</span>

Необходимо добавить условие, которе проверит отправилась ли форма при помощи PHP на указанные адрес электронной почты.

<span style="color: rgb(79, 129, 189);">if (mail("example@mail.ru", "Заказ с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: example2@mail.ru \r\n"))<br> {<br> echo "сообщение успешно отправлено";<br>} else {<br> echo "при отправке сообщения возникли ошибки";<br>}</span>

Таким образом программный код файла send.php, который отправит данные HTML формы на почту будет выглядеть следующим образом:

<span style="color: rgb(79, 129, 189);"><?php<br>$fio = $_POST['fio'];<br>$email = $_POST['email'];<br>$fio = htmlspecialchars($fio);<br>$email = htmlspecialchars($email);<br>$fio = urldecode($fio);<br>$email = urldecode($email);<br>$fio = trim($fio);<br>$email = trim($email);<br>//echo $fio;<br>//echo "<br>";<br>//echo $email;<br>if (mail("example@mail.ru", "Заявка с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: example2@mail.ru \r\n"))<br> { echo "сообщение успешно отправлено";<br>} else {<br> echo "при отправке сообщения возникли ошибки";<br>}?></span>

Три строки для проверки, передаются ли данные в файл закомментированы. При необходимости их можно удалить, так как они нужны были только для отладки.


Помещаем HTML и PHP код отправки формы в один файл

В комментариях к этой статье многие задают вопрос о том, как сделать, чтобы и HTML форма и PHP код отправки данных на почту находились в одном файле, а не двух.

Для реализации такой работы нужно поместить HTML код формы в файл send.php и добавить условие, которое будет проверять наличие переменных в массиве POST (этот массив передается из формы). То есть, если переменные в массиве не существуют, то нужно показать пользователю форму. Иначе нужно принять данные из массива и отправить их адресату.

Давайте посмотрим как изменить PHP код в файле send.php:

<span style="color: rgb(79, 129, 189);"><html><br><head><br><title>Форма заявки с сайта</title><br></head><br><body><br><?php<br>//проверяем, существуют ли переменные в массиве POST<br>if(!isset($_POST['fio']) and !isset($_POST['email'])){<br> ?> <form action="send.php" method="post"><br><input type="text" name="fio" placeholder="Укажите ФИО" required><br><input type="text" name="email" placeholder="Укажите e-mail" required><br><input type="submit" value="Отправить"><br></form> <?php<br>} else {<br> //показываем форму<br> $fio = $_POST['fio'];<br> $email = $_POST['email'];<br> $fio = htmlspecialchars($fio);<br> $email = htmlspecialchars($email);<br> $fio = urldecode($fio);<br> $email = urldecode($email);<br> $fio = trim($fio);<br> $email = trim($email);<br> if (mail("example@mail.ru", "Заявка с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: example2@mail.ru \r\n")){<br> echo "Сообщение успешно отправлено";<br> } else {<br> echo "При отправке сообщения возникли ошибки";<br> }<br>}<br>?><br></body><br></html></span>

Существование переменной в POST массиве мы проверяем PHP функцией isset(). Восклицательный знак перед этой функцией в условии означает отрицание. То есть, если переменной не существует, то нужно показать нашу форму. Если бы я не поставил восклицательный знак, то условие дословно означало бы - "если существует, то показать форму". А это неправильно в нашем случае. Естественно, что вы можете переименовать его в index.php. Если будуту переименовывать файл, то не забудьте переименовать название файла и в строке <form action="send.php" method="post">. Форма должна ссылаться на эту же страницу, например index.php. В код я добавил заголовок страницы.

Частые ошибки, возникающие при отправке PHP формы с сайта

Первая, наверное самая популярная ошибка, это когда вы видите пустую белую страницу без сообщений. Это означает, что вы допустили ошибку в коде страницы. Вам нужно включить отображение всех ошибок в PHP и тогда вы увидите, где допущена ошибка. Добавьте в код:

<span style="color: rgb(79, 129, 189);">ini_set('display_errors','On');<br>error_reporting('E_ALL');</span>

Файл send.php должен запускаться только на сервере, иначе код просто не будет работать. Желательно, чтобы это был не локальный сервер, так как он не всегда настроен на отправку данных на внешний почтовый сервер. Если вы запустите код не на сервере, то вам отобразиться код PHP прямо на странице.

Таким образом, для корректной работы я рекомендую поместить файл send.php на хостинг сайта. Там, как правило, все уже настроено.

Еще одна частая ошибка, когда появляется оповещение "Сообщение успешно отправлено", а письмо не приходит на почту. В этом случае нужно внимательно проверить строку:

<span style="color: rgb(79, 129, 189);">if (mail("example@mail.ru", "Заказ с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: example2@mail.ru \r\n"))</span>

Вместо example@mail.ru должен быть email адрес на который нужно отправить письмо, а вместо example2@mail.ru должен быть существующий email данного сайта. Например для сайта webriz.ru это будет ifo@webriz.ru. Только в этом случае письмо с данными из формы будет отправлено.

Читайте также статью про немного модифицированный вариант данной формы отправки.

65 комментариев

    • Юрий1 апреля 2019 14:20
      Подобную форму можно создать и без кода, есть множество готовых плагинов для этого, например: ru.wordpress.org/plugins/ucalc

    • Pavel16 марта 2019 00:30
      Доброго времени суток! Все сделал как описано(код ниже). Но до моей почты так и не доходит сообщение. Заранее благодарен! Автору Респект;)

      <html>
      <head>
      <title>Форма заявки с сайта</title>
      </head>
      <body>
      <?php
      if(!isset($_POST['email'])){
       ?>
       <form id="signup-form" action="send.php" method="post">
                  <input type="email" name="email" id="email" placeholder="Введите Ваш Email" required>
                  <input type="submit" value="Получить описание + инструкцию">
              </form>
      </form>
      <?php
      $email = $_POST['email'];
      $email = htmlspecialchars($email);
      $email = urldecode($email);
      $email = trim($email);
      //echo $email;
      if (mail("***@gmail.com", "Заявка с сайта", "E-mail:".$email. ,"From: info@edbel.info \r\n"))
       {     echo "сообщение успешно отправлено"; 
      } else { 
          echo "при отправке сообщения возникли ошибки";
      }?>
      </body>
      </html>

    • Роман Владимирович Громов15 марта 2019 16:20
      я вот чего подумал..
      надо в форму добавлять текущую дату, а при проверке сравнивать ее с текущей датой.
      получится, что если робот скопировал скрытые переменные, то завтра он уже не сможет спамить.. ну или хоть до часа округление

    • Иго-гоша29 января 2019 15:26
      Уважаемые знатоки. Вот подскажите мне такой интересный штук.
      Когда копирую код из данного поста - все работает прекрасно. Но, стоило мне переделать код под себя - браузер выдает ошибку 500. 
      Вот и сам код. Буду благодарен любой информации
      <html>
      <head>
      <title>Форма заявки с сайта</title>
      </head>
      <body>
      <?php
      //проверяем, существуют ли переменные в массиве POST
      if(!isset($_POST['pib']) and !isset($_POST['tel']) and !isset($_POST['adres'])and !isset($_POST['rah'])and !isset($_POST['pokaz'])){
       ?> <form action="send.php" method="post">
      <input type="text" name="pib" placeholder="345345" required>
      <input type="text" name="tel" placeholder="34534dfg5" required>
      <input type="text" name="adres" placeholder="ghj" required>
      <input type="text" name="rah" placeholder="ert" required>
      <input type="text" name="pokaz" placeholder="dfgdg" required>
      <input type="submit" value="Отправить">
      </form> <?php
      } else {
       //показываем форму
       $pib = $_POST['pib'];
       $tel = $_POST['tel'];
       $adres = $_POST['adres'];
       $rah = $_POST['rah'];
       $pokaz = $_POST['pokaz'];
       $pib = htmlspecialchars($pib);
       $tel = htmlspecialchars($tel);
       $adres = htmlspecialchars($adres);
       $rah = htmlspecialchars($rah);
       $pokaz = htmlspecialchars($pokaz);
       $pib = urldecode($pib);
       $tel = urldecode($tel);
       $adres = urldecode($adres);
       $rah = urldecode($rah);
       $pokaz = urldecode($pokaz);
       $pib = trim($pib);
       $tel = trim($tel);
       $adres = trim($adres);
       $rah = trim($rah);
       $pokaz = trim($pokaz);
       if (mail("///////gmail.com", "Заявка с сайта", "1:".$pib.","2: ".$tel","3: ".adres","4: ".$rah","5: ".$pokaz"  , "From: ///////.in.ua \r\n")){
       echo "Сообщение успешно отправлено";
       } else {
       echo "При отправке сообщения возникли ошибки";
       }
      }
      ?>
      </body>
      </html> 

      • Роман23 февраля 2019 19:24
        Немного подправил одну строку, были ошибки:
        if (mail("///////gmail.com", "Заявка с сайта", "1:".$pib.","2: ".$tel","3: ".$adres.","4: ".$rah.","5: ".$pokaz."  , "From: ///////.in.ua \r\n")){

    • Владимир11 января 2019 06:33
      Приветствую всех! Причитал все комментарии и вопросы в них. Не встретил интереса к попыткам защититься от спама. Неужели ни для кого не актуально? 
      Автору: (Респект за публикацию!) Нельзя ли нам показать, в такой-же манере, как добавить скрытое поля для ботов и настроить условие на остановку скрипта, если скрытое поле будет заполнено? Ну или какой-то другой способ, простой и эффективный.

      • Роман11 января 2019 19:42
        Здравствуйте. Действительно защита от спама это интересный вопрос. Я постарался развернуть его в отдельной статье. Она доступна по ссылке.

        • Владимир11 января 2019 22:36
          Роман, выражаю Вам огромную признательность! Надеюсь у меня когда-нибудь тоже появится возможность сделать для Вас что-то полезное!

      • Роман8 января 2019 16:37
        Здравствуйте. Обычно подставляется email домена, с которого отправляете почту, например для сайта webriz.ru это - info@webriz.ru. А так, можете указать любой email, но первый вариант предпочтительнее для антиспам ботов.

    • iRINA26 декабря 2018 10:03
      Спасибо огромное за статью!Очень все доходчиво, по пунктам объяснено. На ютуб долго искала что-то подобное, так и не нашла, все не то.Добавляю Ваш сайт в избранное, уверена, найду здесь много полезного. В примере отправляются данные из формы на почту админа, как я понимаю, а как сделать, чтобы дополнительно приходило письмо зарегистрировавшемуся пользователю, о том, что регистрация прошла успешно и что подтвердить ее надо, кликнув по ссылке?

      • Роман8 января 2019 16:39
        Здравствуйте. В тело письма вы можете подставить любые переменные, в том числе и сгенерированную ссылку для пользователя.

    • Roman Gunko24 ноября 2017 16:45
      Спасибо за статью. Но возникли вопросы по отправке почты, то есть все работает, выдает сообщение об успешной отправке, но письма не приходят. Что конкретно прописать в поле: "From: mail@gmail.com \r\n"?
      Можно ли туда прописать адрес почты домена mail@site.com? И еще, как вывести сообщение, о том, что сообщение отправлено успешно в всплывающем окне на той же странице, где и сама форма? Что подключить и каков сам код? Спасибо.

          • Роман29 ноября 2017 20:18
            Нужно организовать отправку данных при помощи асинхронного jаvascript кода. Например при помощи функции j query $.post(). В случае положительного ответа от сервера нужно показывать сообщение об отправке письма.

    • Кит Бомбит2 декабря 2016 08:40
      Здравствуйте, спасибо большое.
      А что делать если есть ошибки при отправке
      Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
      использую локальный сервер XAMMP

        • Кит Бомбит14 декабря 2016 09:13
          Спасибо, я настроил как там писали, теперь письмо отправляется (т.е. функция mail не возвращает ошибку) но оно не приходит, т.к. я не знаю что ставить всемто айди и пароля, пробовал данные гугл аккаунта (правда там почта с яндексa, а не на gmail)
          {don't forgot to replace my-gmail-id and my-gmail-password in above code}

          • Роман20 декабря 2016 16:43
            Насколько мне известно практически все почтовые сервисы (mail, gmail, yandex и др.) дают возможность использовать их smtp для отправки почты. Но есть ограничения. Например mail дает возможность отправлять не более одного письма в минуту. Поэтому можно попробовать через smtp сервер mail.ru. Еще у каждого сервиса есть описание в разделе помощи о том как настроить smtp сервер локально (обычно для программ отправки почты), но там прописываются все необходимые параметры, порт и т.п.

    • Сергей Храпин14 декабря 2017 09:38
      Спасибо) Все работает (проверял на локалке)

      Отличная идея! Супер!

      сдрасте форму залил на хост после отправке выдает ошибку, что делать, функцию вроде правильно заполняю Warning: mail(/home/u244368929/.logs/php_mail.log): failed to open stream: No such file or directory in /home/u244368929/public_html/report.php on line 25

    • Иван Орлов24 ноября 2017 16:34
      Привет! Спасибо за статью, только изучаю PHP и JS. Было бы круто, если бы вы таким же простым и понятным языком написали статейку об отправке формы без перезагрузки страницы! 


      • Роман25 ноября 2017 18:45
        По вашему вопросу уже имеется материал на сайте, я добавил ссылку в конце данной статьи

    • Бетокам Пермь12 марта 2018 09:27
      Добрый день! Спасибо за такую статью, очень пригодилась. Есть несколько вопросов: Все работает, письмо приходит, но если в поле фио напечатать русские буквы, то приходит на почту вот такой текст из этого поля п╓п≤п•:я┌п╣я│я┌. , а если в поле указывать только цифры, то приходит вообще пустое поле. <meta charset="UTF-8"> поставила, кодировку на UTF-8 поменяла. В чем может быть проблема?

      • Роман14 марта 2018 16:28
        Попробуйте так:
        $headers = "Content-Type: text/html; charset=UTF-8";
        if (mail("example@mail.ru", "Заказ с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: example2@mail.ru \r\n", $headers));

    • Dpost24 ноября 2016 16:22
      Доброго дня!
      Пытаюсь интегрировать вашу форму, но с добавлением полей.
      Не могу только верно вписать в функцию само тело письма, не понял как верно расставить кавычки и точки, не понял зависимости... :(
      if (mail("mail@gmail.com", "Письмо с сайта", "ФИО:".$name.". TEL".$tel.". "E-mail: .$email "ТЕМА:".$textTitle.". "ТЕКСТ:.$comment.", "From: mail@gmail.com \r\n"))
      прошу помощи, помогите верно расставить знаки.


      • Роман4 декабря 2016 09:23
        if (mail("mail@gmail.com", "Письмо с сайта", "ФИО:".$name.". TEL".$tel.". E-mail: ".$email." ТЕМА:".$textTitle.". ТЕКСТ: ".$comment, "From: mail@gmail.com \r\n"));

      • Роман24 ноября 2017 16:08
        php код должен запускаться на сервере, если запускаете локально, то будете видеть просто код. Установите denver или webapp

    • Mikh14 января 2017 07:38
      Здравствуйте! Сделал все, как написано в статье. При нажатии на кнопку браузер переходит на страницу с эхо об успешной отправке, но письмо не приходит на почту - ни в спам, никуда. В чем может быть дело?

      • Роман16 января 2017 16:02
        Тут все зависит от настроек почтового сервера (SMTP), от того локально ли запускается сервер, позволяют ли ему настройки выходить в Интернет. Если этот код поместить на хостинг, то используется почтовый сервера хостинга, который также может иметь свои ограничения на отправку писем. Некоторые хостеры перестраховываются так от отправки с их серверов спама.

        • Mikh19 января 2017 19:06
          С другой формы с того же хостинга письма приходят на почту. Вчера поменял из Вашего примера адрес почты-отправителя с mail на gmail и yandex - письма стали приходить.

          • Роман24 января 2017 20:07
            example@mail.ru в примере указан специально с таким названием, чтобы его поменяли на свой. Желательно ставить емайл домена, с которого отправляется письмо, например, для домена webriz.ru- это info@webriz.ru

    • Сергей Храпин26 мая 2017 19:55
      Как сделать так, чтобы после отправки формы письмо приходило не только получателю, но и пользователю (отправителю формы), например со ссылкой на мероприятие? Спасибо

      • Роман26 мая 2017 21:16
        добавьте строку и запустите еще раз функцию mail. В ней вместо example@mail.ru поставьте переменную с почтой пользователя и откорректируете сообщение. В итоге получите желаемый результат

      • Роман4 сентября 2017 20:40
        У вас же браузер спрашивает, повторно отправить? Не нажимайте. Можно также использовать cookie для запоминания действий пользователя

            • Иван Орлов6 сентября 2017 17:45
              Можно добавить ссылку, но это не совсем практично как я понял, потому как пользователь может легко захотеть обновить страничку, а может и не раз) И постоянно будут отправляться письма. Я вобщем поузнавал, почитал, нужно чистить заголовок с помощью функции header()
              После обработки формы, вставлять допустим следующее:
              header ("Location: http:// "
              .$_SERVER ['HTTP_HOST']. $_SERVER ['REQUEST_URI']);
              exit();
              Я вот так сделал:  https://docs.google.com/doc
              Но необходимо чтобы PHP скрипт шёл в самом верху, иначе заголовок не передастся )

    • Serge Sushetsky5 ноября 2017 12:14
      Скажите , а как изменить код, что бы форма воспринимала русский язык. в этом виде отправляется пустое место, если фамилию вводить на русском. если на английском то все передается корректно

    • Сергей Кургин29 декабря 2017 19:32
      Всех с наступающим! Подскажите пожалуйста что делать если на странице показывается сообщение "при отправке сообщения возникли ошибки"? Где нужно искать ошибку?

    • Сергей Саранча12 января 2018 13:24
      Ребят, все ок, все работает, но открывает новое окно с "сообщение успешно отправлено"
      Как теперь сделать, чтобы это сообщение всплывало на самом сайте, на пару сек и исчезало

    • Андрей Пантилеев13 октября 2016 08:24
      Хорошая статья, Еще бы добавить поле для ввода сообщения от пользователя, а то это форма заявки какая-то

    • Артем Достовалов22 ноября 2017 12:59
      Непонятно как вывести нормальную работу форму после отправки (чтобы не загружалась страница send.php)
      1. "Также нужно будет объединить форму и скрипт php на одной странице и прописать условие" - на какой странице, где это объединить? Где страница с формой? или send.php?
      2. Можете дать корректный пример работающий, чтобы пользователь оставался на той же странице?


        • Артем Достовалов24 ноября 2017 13:02
          Прочитал, спасибо. Только я не понял, какую проблему мы решаем объединением файла. Вопрос возник из-за того что мы зачем то видим новую страницу send.php.
          Можно ли просто видеть сообщение об успешной отправке в самой форме (без загрузки страницы send.php)
          В остальном все ок, работает, данные принимает и письма шлет P.S. Я вижу кстати на странице send.php сообщение не на русском языке


          • Роман24 ноября 2017 22:52
            пропишите кодировку для страницы - все станет по-русски, можете переименовать страницу в index.php. Все будет работать через нее, название никакой роли не играет, только в коде <form action="send.php" method="post"> вместо send.php нужно прописывать, чтобы страница ссылалась сама на себя (index.php).
            В итоге никаких новых страниц.

    • Dmitry Sazhnev2 ноября 2017 12:56
      Здравствуйте. А подскажите, что добавить в конце php скрипта чтобы после отправки формы пользователь оставался на той же странице, без всяких сообщений об успешной отправке

      • Роман6 ноября 2017 12:57
        Убираем echo "сообщение успешно отправлено"; и echo "при отправке сообщения возникли ошибки";
        Также нужно будет объединить форму и скрипт php на одной странице и прописать условие
        if(!isset($_POST['fio']) and !isset($_POST['email'])){
        внутри отправка формы (удаляем echo)
        } else {
        здесь показываем html форму (html код примера)
        }

        В конце этой статьи добавлена ссылка на новый материал по отправке формы без перезагрузки страницы

    • Alex4 октября 2017 12:16
      Добрый день!
      После отправки формы в Firefox выдает:
      ";
      //echo $email;
      if (mail("example@mail.ru", "ааАбаВаКаА б баАаЙбаА", "аЄаа:".$fio.". E-mail: ".$email ,"From: example2@mail.ru \r\n"))
      { echo "баОаОаБбаЕаНаИаЕ ббаПаЕбаНаО аОбаПбаАаВаЛаЕаНаО";
      } else {
      echo "аПбаИ аОбаПбаАаВаКаЕ баОаОаБбаЕаНаИб аВаОаЗаНаИаКаЛаИ аОбаИаБаКаИ";
      }?>
      Если запустить в Google Chrome, то выдает страницу с содержанием php файла.
      Запускаю на локальном сервере, кодировка UTF-8.
      Подскажите, что не правильно делаю?


      • Роман5 октября 2017 12:17
        Для кода php подставляются специальные символы перед и после кода, см. пример. Запускаете по адресу следующего типа http://localhost/index.php на локальном сервере ??? Также нужно проверить, без ошибок ли скопирован код

        • Alex5 октября 2017 18:11
          Скопировал код прямо из Notepad++, как у меня он записан:
          ";
          //echo $email;
          if (mail("example@mail.ru", "Заявка с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: example2@mail.ru \r\n"))
          { echo "сообщение успешно отправлено";
          } else {
          echo "при отправке сообщения возникли ошибки";
          }?>


          • Роман7 октября 2017 08:41
            А другой php код работает на вашем сервере? Вставьте echo "Проверка работы php"; Создайте это в файле index.php. Не забывайте про спецсимволы открытия и закрытия кода php.

            • Alex10 октября 2017 20:52
              В этом случае в Firefox открывается пустой экран, а в Google Chrome выдает код php,
              который и был в файле.

              • Роман14 октября 2017 09:34
                Если отображается пустой экран, то где тов в коде допущена ошибка 
                ini_set('error_reporting', E_ALL);
                ini_set('display_errors', 1);
                ini_set('display_startup_errors', 1);
                Этот код позволит посмотреть ошибки. В хром видимо неверно запускаете скрипт. Если я запущу php код минуя сервер, то увижу ваш вариант в хром.

    • Mukss24 сентября 2017 10:08
      Привет. после отправки открывается пустое белое коно и письма не приходят. в чем проблема? скрипт на хостинге лежит.путь прописан верно.

      • Роман24 сентября 2017 11:30
        пустое белое окно значит, что вы допустили ошибки в PHP. Добавьте код отображения всех ошибок ini_set('display_errors','On');
        error_reporting('E_ALL');
RSS
Нет комментариев. Ваш будет первым!
OyO