Обратный звонок

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

Что такое обратный звонок? Это широко распространённый способ стимулирования клиента к установлению контакта. Человек на сайте видит кнопку «заказать звонок», а нажав на неё — открывается окошко, в котором он может оставить свой телефон и имя, и ожидать звонка.

Кнопка выглядит примерно так:

А форма — так:

Код для её реализации очень простой.

Будет два файла. Первый — содержит форму заказа обратного звонка.

Второй — отправляет полученные данные на вашу почту.

Просто скопируйте код первого файла в отдельный текстовый файл и сохраните его как call.html, а код второго — также в отдельный текстовый файл — и его нужно будет сохранять как call.php.

Итак. Код первого:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Заказ обратного звонка</title>
</head>
<body>
Заказать бесплатный звонок. Мы вам перезвоним и отдадим скидку. 
<form action="call.php" method="post">
Как вас зовут?
  <input type="text" name="name" />
Ваш номер телефона
<input type="text" name="phone" />
<input type="submit" value="Отправить данные для звонка!">
</form>
</body>
</html>

Этот текст нужно сохранить в файл call.html.

Второй файл должен называться call.php

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Обработка заявки на звонок</title>
</head>
<body>
<?php
/*Создаём функцию для отправки письма*/
function send_email($name_from, // имя отправителя
                        $email_from, // email отправителя
                        $name_to, // имя получателя
                        $email_to, // email получателя
                        $data_charset, // кодировка переданных данных
                        $send_charset, // кодировка письма
                        $subject, // тема письма
                        $body, // текст письма
                        $html = FALSE, // письмо в виде html или обычного текста
                        $reply_to = FALSE
                        ) {
  $to = mime_header_encode($name_to, $data_charset, $send_charset)
                 . ' <' . $email_to . '>';
  $subject = mime_header_encode($subject, $data_charset, $send_charset);
  $from =  mime_header_encode($name_from, $data_charset, $send_charset)
                     .' <' . $email_from . '>';
  if($data_charset != $send_charset) {
    $body = iconv($data_charset, $send_charset, $body);
  }
  $headers = "From: $from
";
  $type = ($html) ? 'html' : 'plain';
  $headers .= "Content-type: text/$type; charset=$send_charset
";
  $headers .= "Mime-Version: 1.0
";
  if ($reply_to) {
      $headers .= "Reply-To: $reply_to";
  }
  return mail($to, $subject, $body, $headers);
}
function mime_header_encode($str, $data_charset, $send_charset) {
  if($data_charset != $send_charset) {
    $str = iconv($data_charset, $send_charset, $str);
  }
  return '=?' . $send_charset . '?B?' . base64_encode($str) . '?=';
}
/* Осуществляем проверку вводимых данных и их защиту от враждебных 
скриптов */
$name = htmlspecialchars($_POST["name"]);
$phone = htmlspecialchars($_POST["phone"]);
/*На какую почту отправить уведомление?*/
$myemail = "mail@site.ru";
/*Создаём сообщение для отправки*/
$message_to_myemail = "Заявка на обратный звонок 
Отправитель: $name, телефон: $phone";
/*Отправляем письмо с помощью функции*/
send_email('Автор письма',
               'sender@site.ru',
               'Получатель письма',
               $myemail,
               'utf-8',  // кодировка, в которой находятся передаваемые строки
               'utf-8', // кодировка, в которой будет отправлено письмо
               'Письмо-уведомление',
               $message_to_myemail);
echo "Ваша заявка получена";
echo"Чтобы вернуться на главную страницу, нажмите сюда: <a href='http://aleksandr-krylov.ru/index.html'>главная страница</a>";
?>
</body>
</html>

Оба этих файла размещаем в одной папке на сервере. А кнопку «заказать обратный звонок» можно взять из предыдущей записи. Она просто должна открывать первый файл.

А второй файл содержит много дополнительного кода, и его можно было сделать куда проще, но оставил так — вдруг у вас будет другая форма, в которой будет нужно вводить ещё и электронную форму, и сообщение — кто ж знает, что вы там для клиентов удумаете )

Симпатичную кнопку, к которой можно привязать эти файлы, можно взять из предыдущей записи: Кнопка.

Обратный звонок: 58 комментариев

    1. Александр Крылов Автор записи

      Добрый день, Вадим.

      Я думаю, вы уже определились, что адрес куда отправлять — это вот эта строка:

      $myemail = «mail@site.ru»;

      Ящик, существующий в кабинете, можно попробовать подставить вот сюда:

      ‘sender@site.ru’,

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

      $from = mime_header_encode($name_from, $data_charset, $send_charset)

      .’ ‘;

      Строка $from в комментарий целиком не поместилась, поскольку движок сайта режет комментарии для защиты от возможных атак. Выше в примере — там две строчки )

      Отмечу также, что, насколько помню, у данного хостинга есть какие-то ограничения по работе с php. Поэтому если решить задачу этим способом не получится, то надо будет подумать )

  1. Дмитрий

    Здравствуйте, помогите соеденить 2 тих файла в один! У меня в CMS данные отправляются только если все в одном.

    1. Александр Крылов Автор записи

      Дмитрий, здравствуйте.

      Чтобы объединить два файла в один, нужно сделать следующее:

      1) Создать один файл call.php

      2) Перенести в него содержимое обоих файлов

      3) В начале файла создать условие «если»

      Если существуют глобальные переменные name, phone, то выполнить вторую часть файла (отправить письмо).

      Если не существуют — то показать форму для отправки.

      То есть код будет начинаться с фразы if isset — а дальше два варианта.

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

      Но если что-то осталось непонятным, то я очень рекомендую вам посмотреть курс по PHP и MySQL Евгения Попова — там, в том числе, рассмотрен пример именно такого варианта 2 файла в одном.

  2. Yana

    Ребят, для нежелающих разбираться с кодом, коих тут, вероятне всего, довольно мало предлагаю попробовать воспользоваться уже готовым решением от сервиса https://excitel.net/

    После регистрации будет доступен код кнопки, который нужно будет добавить на свой сайт.

    Есть возможность настроить кнопку под свои предпочтения (как дизайн, так и функционал).

    Можно по нажатию на кнопку просто принимать звонки через интернет, можно принимать голосовые сообщения либо заказы на обратный звонок.

    1. Александр Крылов Автор записи

      Спасибо за ваш комментарий. Посмотрел сервис — вроде, по делу. Наличие бесплатной версии радует.

      Правда, на мой взгляд, вам бы стоило подробней расписать, как там реализовать заказ обратного звонка.

      Поскольку сейчас это на сайте вообще не видно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *