Php форма зворотного зв'язку, php

Ви коли-небудь хотіли встановити на свій сайт форму зворотного зв'язку? Напевно Ви зустрічалися з подібними скриптами. Як не дивно, готові скрипти відправки форми на email користуються великою популярністю (Ви можете переконатися в цьому в будь-якому архіві скриптів), причому їх існує велика кількість. Є прості, в яких нічого не змінюється, а є складні і великі системи, які функціонують на mysql, дозволяють динамічно змінювати будь-які поля, містять купу налаштувань. Але так чи вони потрібні? На мій погляд необхідність в подібних системах дуже сумнівна.

Тестувати відправку пошти на домашньому комп'ютері не вийти. Для цього Вам необхідний хостинг з підтримкою php і функціями надсилання електронних листів. Я рекомендую Вам хостинг-провайдера runweb.ru. Цей провайдер пропонує відмінні тарифи, найвищу швидкість доступу і відмінне обслуговування.

Методи відправки пошти

Відправляти пошту з сервера за допомогою php можна двома основними способами.
Я хочу розглянути обидва ці способи по порядку.

Перший і найпростіший - це використання php функції mail (). Функція дуже проста і зрозуміла, хоча відправка пошти з використанням mail () має і ряд недоліків. Найголовніший - лист відправляється не безпосередньо, а через php. Одночасно програма php підставляє в лист деякі свої поля. Наприклад, у Вас не вийде коректно вказати відправника. В поле "from" (тобто від кого надійшов лист) в більшості випадків буде стояти ім'я сервера. Вся справа в тому, що php підставляє свої заголовки в службову рядок лист "from".

Проте відправка пошти за допомогою функції mail () залишається найпростішим
способом відправити лист з сервера. Давайте розглянемо цей спосіб докладніше.

Функція mail () має наступний синтаксис:

Ось повний приклад відправки пошти за допомогою mail ():

Зверніть увагу, що при використанні цієї функції на домашньому комп'ютері вона може видавати помилку, так як давно б відправив лист без поштового сервера.

Тепер давайте подивимося, як можна відправити лист за допомогою sendmail.

sendmail - це стандартна програма операційної системи unix, яка відправляє пошту.
php може запускати unix-програми шляхом використання засобу pipes (дослівно "трубопроводи"). Це засіб unix дозволяє направляти дані з однієї програми в іншу, на зразок того, як ми пишемо в файл. Тільки файлом в цьому випадку виступає програма (зокрема, sendmail), яка і отримує дані.

sendmail програма має безліч параметрів, ми будемо використовувати деякі з них. Щоб використовувати sendmail, потрібно відкрити до нього потік (pipe). В php це робиться використанням команди popen (), яка по синтаксисі ідентична команді fopen (). Шляхом використання popen () ми відкриває потік до sendmail
для запису в нього (пам'ятаєте, параметр режиму "w"?), після чого можна відправляти в нього дані звичайної командою fputs (). Подивимося, як повністю виглядає процедура відправлення листа через sendmail:

Далі ми записуємо в потік спочатку заголовки листи (змінна $ text_headers), потім відокремлюємо їх символом розриву рядків і записуємо текст повідомлення. Останній крок - закриття потоку і перевірка на помилку. При правильному виконанню в змінну $ result поміщається нуль, а якщо виникла помилка, в неї записується номер помилки.

Тепер давайте розглянемо приклад використання можливостей відправки пошти. Для цього ми зробимо форму зворотного зв'язку, яку Ви зможете встановити на свій сайт. В якості методу відправлення листа ми будемо використовувати sendmail.

Створюємо форму зворотного зв'язку

Наша форма зворотного зв'язку буде являти собою один скрипт. Цей скрипт буде виводити форму і відправляти лист.

Тепер Давате розглянемо, як працює ця програма. Виконання починається з рядка "if (! $ A) show_form ();", так як до цього зазначена функція, яка, природно, не виконується. У цьому рядку ми перевіряємо, чи була спроба заповнення форми (з форми, як Ви бачите, передається змінна $ a, яка і перевіряється в цьому рядку). Якщо такої спроби не було, викликається функція show_form (), яка виводить форму.

Далі, якщо форма вже передавалася скрипту, перевіряються обов'язкові поля. Поля "ім'я", "email" і "текст повідомлення" є обов'язковими. Якщо будь-яка з них не заповнено, форма викликається з параметром $ s, в якому передається повідомлення про помилку.

Тепер, якщо все правильно, ми описуємо необхідні змінні і rfc заголовки листи, після чого відправляємо повідомлення через sendmail і виводимо повідомлення про результат (відправлено / НЕ відправлено). Тут все просто і зрозуміло з попередніх прикладів.

Власне це і все, що необхідно, щоб зробити форму зворотного зв'язку на Вашому сайті :)
Як бачите, нічого складного немає і програма виходить досить маленька.

Схожі статті