Skip to content

Instantly share code, notes, and snippets.

@cimmwolf
Created May 20, 2017 10:33
Show Gist options
  • Save cimmwolf/588d72d11fac8b0f9ca6e0e5e57427a3 to your computer and use it in GitHub Desktop.
Save cimmwolf/588d72d11fac8b0f9ca6e0e5e57427a3 to your computer and use it in GitHub Desktop.

Опишу приём заявок на примере одного сайта. Остальные работают по схожей схеме или ещё проще.

При отправке формы с сайта она делает AJAX POST запрос к сервису. Передаваемые данные:

  • type - обязательно;
  • name - обязательно;
  • phone или tel (разные формы по разному настроены) - обязательно;
  • pageTitle (заголовок страницы откуда запрос) - обязательно;
  • date - дата праздника;
  • text - передаётся не во всех формах.

Тема письма определяется на основе type как-то так:

switch ($this->type) {
    case 'callback':
        $this->subject = 'Заказ обратного звонка';
        break;
    case 'certificate':
        $this->subject = 'Заявка на сертификат';
        break;
    case 'discount-5000':
        $this->subject = 'Заявка на скидку 5000';
        break;
    case 'snow-party':
        $this->subject = 'Заказ снежной вечеринки';
        break;
    case 'all-inclusive':
        $this->subject = 'Заказ праздника под ключ';
        break;
    default:
        $this->subject = 'Заказ обратного звонка';
}

Тело письма определяется как-то так:

        $defaults = ['text' => '-', 'pageTitle' => 'не определено'];
        $data = array_merge($defaults, $this->data);

        $text = "";
        if (!empty($data["date"]))
            $text .= 'Дата праздника: ' . $data["date"] . '<br>';

        $text .= '
            Имя заказчика: ' . $data["name"] . '<br>
            Телефон: ' . $data["tel"] . '<br>
            Подробности: ' . $data["text"] . '<br>';

        $text .= "<br><i>отправлено со страницы: «{$data['pageTitle']}»</i>";
        $this->msgHTML($text);

Вот почти так работает сейчас отправка заявок. В ответ на обращение сервис отвечает кодом 200, если всё ОК и другим кодом, если что-то не получилось. Сейчас отправка работает через сервера Яндекса. Логины и пароли для SMTP могу прислать. Желательно организовать очередь заявок, чтобы отправка заявки не заставляла ждать клиента пока завершится SMTP.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment