Система відправлення листів із атачами
Автор: Тотоєв Олександр ([email protected])
Автоматичне побудова форм різної складності та надсилання їх листом з аттачами довільної кількості
Всі стикалися з тривіальним завданням – створення форми для відправки по e-mail. Зазвичай немає ніяких проблемм. Але й робота ця не така цікава і захоплююча. Проста рутина. Виникає ідея створити програму, яка б автоматизувала цей процес. Спочатку визначимо завдання. Припустимо, що нам потрібно створити форми на сайті.
У формах може бути:
- заголовок розділу форми
- текстове поле (text)
- текстовий блок (textarea)
- поле пароля (password)
- поле вибору із списку (select)
- поле checkbox
- поле радіо буттону (radio)
- невидиме поле (hidden)
- поле завантаження файлу (file)
Надсилати листи передбачається у текстовому вигляді з атачами. Листи у форматі html не користуються популярністю у народу. Повинна бути перевірка заповнення полів, обов'язкових до заповнення. Ось усі пункти завдання готові.
Вирішено зробити 3 файли:
- файл із формою
- файл відправлення форми
- файл ініціалізації форми
Забігаючи вперед, можу припустити, захоче покласти файли програми (перші два) в окремий каталог, наприклад forms, і просто інклюдити файл з формою на потрібних сторінках сайту, передаючи йому параметром шлях до файлу ініціалізації даної форми. Так як форми можуть відрізнятися одна від одної в оформленні, я не буду городити величезний файл з безліччю варіантів і наведу повністю робочий приклад, що працює на сайті «Сьомого континенту» в розділі «постачальники», а також на сайті gipragor.ru в розділі « задати питання".
Додам, що у нашихвипадках у формах були варіації виду полів text, textarea (у формі «Сьомого континенту» 3 види поля text). У вашому випадку, можливо, знадобиться ще кілька варіантів для полів. Все робиться аналогічно до того, що буде розглянуто нижче.
Почнемо з опису файлу ініціалізації форми.
Нижче наведено текст файлу ini.php
Як бачимо, кожне поле форми описується окремим рядком. Як я не намагався зробити універсальним оформлення всіх полів форм, не вийшло. Внаслідок цього пропоную таке оформлення: Першим скрізь йде назва поля, яке виводиться на екран. Другим тип поля форми:
Третій вказівник обов'язкового заповнення поля. Якщо стоїть одне поле обов'язково. Якщо параметр порожній або будь-який, що відрізняється від 1, поле не обов'язкове. Четвертим вказуємо додатковий параметр, якщо він необхідний. Кожен вид поля має додаткові параметри:
- text long вказує на те, що поле-рядок буде довгим і розміщено під назвою; звичайне поле, без параметра, розміщується праворуч від назви
- те ж саме, що й у text
- checkbox checked вказує на те, що чекбокс буде обрано
- radio четвертим параметром вказується ім'я групи радіо-буттонів, а п'ятим checked, як і у checkbox
- file вказуємо ім'я покажчика масиву файлів, що завантажуються
- hidden вказуємо параметр, відповідно до якого значення цього поля буде підставлено певне значення, або параметр буде переданий як є
Ну ось покінчили з ініціалізацією форми.
Тепер спробуємо написати програму, яка виводить форму користувачеві.
Створюємо файл index.php з наведеним нижче вмістом.
Ну ось наша форма виводиться на екран користувача, і вінстаранно, прикусивши мову, заповнює її поля.
Нижче наведено текст файлу відправки листа з аттачі send.php, який ми кладемо в папку з index.php.
Все вищенаписане призначене для програмістів-початківців на php, і для польоту думки вже досвідчених.
Повторювати програму можна у варіанті моєму, своєму, друга.