form_send.zip

Відправка даних форм на e-mail

Бекенд

Розсилкою електронних листів займається бекенд-частина.

Для того, щоб з сервера відправлялися e-mail повідомлення, потрібно встановити та налаштувати програми типу sendmail.

Деякі хостинги забороняють розсилати e-mail повідомлення на будь-які адреси.

Для відправки електронних листів ми будемо використовувати PHP-скрипт, для цього нам потрібно ознайомитися з деякими термінами.

Змінна - комірка пам'яті, в якій зберігається якесь значення. В PHP змінні починаються зі знака долара. Приклади змінних:

$a = 5;
$b = 3;
$sum = $a + $b;
$c = $a * $b;
$hahaha = $c - $sum;

$a, $b, $c, $sum, $hahaha - назви змінних, комірок пам'яті.

Щоб краще зрозуміти - уявіть бухгалтерську шафу з купою шухлядок, кожна з них підписана назвою.

В кожну шухлядку можна дещо покласти, можна відкрити шухлядку і перевірити що там лежить, можна це забрати, покласти щось інше.

Вище ми розглянули випадок з числами, в змінні записувалися числа. Окрім чисел в змінні можна записувати строки, масиви, об'єкти.

В наступному прикладі "запхаємо у підписані шухляди" строки (отримаємо строкові змінні) та об'єднаємо їх в одну:

$d = "Цир";
$e = "куль";
$f = $d . $e;

$fff = 'Hello';
$wd = 'world';
$result = $fff . " " . $wd;

Як бачите, строки беруться у кавички. Можна використовувати або подвійні, або одинарні.

Якщо в строці потрібно використати лапки чи апостроф, то строки записуються так:

$stroka = 'Газета "Правда"';
$town = "Кам'янець Подільський";

Бувають випадки, що в строці поєднуються і апостроф, і кавички, тоді їх треба екранувати зворотнім слешем:

$stroka = 'Газета "Ранковий Кам\'янець"';
$stroka = "Газета \"Ранковий Кам'янець\"";

Відправка e-mail

Спочатку давайте перевіримо, чи взагалі сервер налаштований і підтримує відправку листів. Створіть файл testmail.php:

<?php
  error_reporting(0);
  $mail = 'poshtar.boba@gnail.com';
  $message = 'Тестове повідомлення';
  $subject = 'Тестовий лист з "Circle Academy"';
  mail($mail, $subject, $message, 'Content-type: text/plain; charset=utf-8 \r\n');
  echo 'Done';

Задайте свою електронну адресу та збережіть файл на сервері в папці mail.

Щоб виконати скрипт перейдіть за посиланням http://circle.com.ua/users/feXX/ваш_логін/mail/testmail.php.

Через деякий час (секунди, хвилини, години, дні) на вашу електронну скриньку має прийти тестовий лист. Скоріш за все він опинеться в паці smap (через недовіру гугла до більшості маленьких сайтів, доменів).

 

Щоб відправити лист в форматі HTML, потрібно використати Content-type: text/html;

<?php
  error_reporting(0);
  $mail = 'poshtar.boba@gnail.com';
  $message = '<h1 style="color: red;">Заголовок листа</h1>
    <p style="color: blue;">Повідомлення.</p>';
  $subject='Тестовий лист з "Circle Academy"';
  mail($mail, $subject, $message, 'Content-type: text/html; charset=utf-8 \r\n');
  echo 'Done';

Зверніть увагу, що повідомлення складається тільки з елементів, що знаходяться всередині <body>.

Всі зображення потрібно завчасно завантажити на сервер і в коді листа прописати абсолютні посилання на них.

Замість вставки коду в PHP можна імпортувати цей код з html-файла:

$message = file_get_contents('mail.html');

Увага! залиште у mail.html тільки контентну частину, все включно до <body> та закриваючі теги body, html повидаляйте!

Відправка даних форми на сервер

Дані форм пересилаються на сервер скрипту, що прописується в атрибуті action форми. Відправка здійснюється при натисканні кнопки submit.

Вже сам серверний скрипт вирішує що з цими даними робити: відправити листа, зберігти в базу даних і т.п.

Для відправки даних використайте першу чи другу форми вашої верстки форм.

Якщо ви не виконали те завдання - можете використати наступний код, вставивши його в новий проект:

<form action="form.php" method="post">
  <input type="hidden" name="form" value="form 3">
  <p><label>Тема повідомлення:<br>
    <input type="text" name="subj" value="Прийміть замовлення"></label></p>
  <p><label>Ім'я:<br><input type="text" name="name"></label></p>
  <p><label>Телефон:<br><input type="tel" name="phone"></label></p>
  <p><label>E-mail:<br><input type="email" name="email"></label></p>
  <p><label>Текст повідомлення:<br><textarea name="text"></textarea></label></p>
  <p><input type="submit" value="Відправити"></p>
</form>

Нехай скрипт, що буде приймати наші дані, буде називатися form.php і він буде відправляти дані з форми нам на електронну пошту:

<?php
  error_reporting(0);
  $mail = 'poshtar.boba@gnail.com';
  $message = '<h2>Повідомлення з сайта "Циркуль.com"</h2>
    <h3>'.$_POST['subj'].'</h3>
    <p><small>(форма '.$_POST['form'].')</small></p><hr>
    <p><strong>ПІП:</strong> '.$_POST['name'].'</p>
    <p><strong>Телефон:</strong> '.$_POST['phone'].'</p>
    <p><strong>E-mail:</strong> '.$_POST['email'].'</p>
    <p><strong>Текст:</strong> '.$_POST['text'].'</p>';
  $subject='Повідомлення з сайта "Циркуль.com"';
  mail($mail, $subject, $message, 'Content-type: text/html; charset=utf-8 \r\n');
  echo 'Data sent successfully.';

У вашій формі повинні бути поля з іменами subj, form, name, phone, email, text.

Для звернення до значення value кожного поля використовується код $_POST['name'], де name - це ім'я елемента форми.