Поставянето на форма за обратна връзка (форма за контакти, feedback form, contact form) вече е почти задължително за един уеб сайт. Формата за обратна връзка е много полезен инструмент, който дава възможност на посетителите на сайта веднага да осъществят контакт с вас като ви изпратят своите въпроси, коментари и пр. директно от страницата за контакти, без да е необходимо да отварят електронната си поща. Затова е силно препоръчително на страницата ви за контакти да имате и форма за обратна връзка, освен адрес/и, телефон/и и имейл/и, които също трябва да бъдат записани на тази страница.

За да направите скрипт за пращане на съобщения от сайта ви трябва да използвате вградената функция mail(). Фукцията mail()може да съдържа в кръглите скоби няколко елемента (наричат се аргументи), като някои от тях са задължителни.

По-конкретно, в кръглите скоби задължително трябва да присъстват следните елементи във вид на низове или като имена на променливите, на които е зададено да съдържат тези елементи като стойност:

1. имейла на който ще бъде пратено съобщението (вашия имейл)
2. темата (заглавието) на съобщението
3. текста на самото съобщение
4. допълнителен хедър с имейла на потребителя, т.е. имейла на който да изпратите вашия отговор

При записването на елементите в кръглите скоби трябва да се спазва точно този ред в който те са изброени по-горе. Отделните елементи се отделят един от друг със запетаи. Следователно синтаксиса на функцията е следния:


mail(вашия имейл, тема, съобщение, имейл на подателя)

За да може текста на съобщението на потребителя да се разположи във вид на аргумент в кръглите скоби на функцията mail(), след написването му той трябва да бъде присвоен като стойност на някаква променлива, например $saobshtenie. В такъв случай в кръглите скоби съобщението ще присъства под формата на променливата $saobshtenie, разположена на трета позиция – след имейла на който се изпраща съобщението и заглавието на съобщението. Имейла на който ще се изпраща съобщението (вашия имейл) може да се зададе директно като низ, например yourname@domain.com

Съдържанието на първия и втория аргумент на функцията mail() – вашия имейл и темата на съобщението – влизат в горната част (header) на електронното писмо. Това е частта на всеки имейл, която се намира над самото съобщение. Електронния адрес на който е изпратено писмото(вашия имейл, на който ще получавате съобщенията от формата) се намира в хедъра на реда обозначаван обикновено като „To:“ или „До:“, а темата (заглавието) на съобщението се намира на реда обозначаван обикновено като „Subject:“ или „Тема:“.

След хедъра на писмото следва основната му част – самия текст на съобщението (message), който се задава като трети аргумент на функцията mail(). След това в кръглите скоби на mail() може да има допълнителни хедъри, които в електронните писма са обозначени като „From:“ или „От:“, „Cc:“ или „Копие до:“ и „Bcc:“ или „Скрито копие до:“. От тях задължителен е допълнителния хедър „From:“, който съдържа информация за имейла на подателя на съобщението.

Както беше споменато, информацията от 4-те аргумента на функцията mail() може да бъде включена в кръглите скоби под формата на низове от букви и символи или във вид на имена на променливите, които съдържат като стойност съответните низове. Например като втори елемент (тема или заглавие на съобщението) може да се зададе заглавие във вид на низ (дума или няколко думи), което ще бъде едно и също при всички изпратени съобщения, например „Съобщение от формата за контакти“ или „Коментар от потребител“ и т.н. Ако във формата има специално поле за заглавие (тема) на съобщението, тогава всеки път ще имаме различно заглавие, написано от съответния потребител. В такъв случай ще извличаме това заглавие от формата чрез масива $_POST и ще го присвояваме на някаква променлива, например $zaglavie, така че заглавието на писмото ще присъства в кръглите скоби на функцията mail() под формата на променливата $zaglavie.

Първо да направим самата форма, като ползваме познатите HTML тагове. Най-простата форма за обратна връзка трябва да съдържа поне 2 полета: едно поле за имейла на посетителя на който вие да изпратите отговора си и едно многоредово поле за самото съобщение. Формата може да представлява нещо подобно:

<html>
<head>
<title>Форма за обратна връзка</title>
</head>

<body>

<form action=“contactscript.php“ method=“POST“>

Email:<br />
<input type=“text“ name=“email“ /><br />

Коментар:<br />
<textarea name=“komentar“ cols=“30″ rows=“5″>
</textarea><br />

<input type=“submit“ value=“Изпрати коментара“ />

</form>

</body>
</html>

Във формата имаме две полета, на които сме задали съответно имената „email“ и „komentar“. Тези имена могат да бъдат и всякакви други, т.е. наименованията на полетата ги избирате вие. На атрибута action сме задали като стойност името на скрипта, който ще обработва нашата форма за контакти, в случая contactscript.php

Съхранете горния код като html или php файл, например contactform.html

В браузъра формата ще изглежда по следния начин:

Сега трябва да направим скрипта contactscript.php, който ще изпраща съобщението в някаква ваша пощенска кутия.

Скрипта може да изглежда по следния начин:

<?php

$email = $_POST[„email“];
$message = $_POST[„komentar“];

mail(„yourname@domain.com“, „Съобщение от формата за контакти“, $message, „From: $email“);

?>

Вашето съобщение беше изпратено успешно.

От материалите за променливите тип array (масив) знаете, че към различните стойности на даден масив може да се обръщате като записвате в квадратни скоби идентификационния номер или ключа на съответната стойност. В горния код извличаме чрез масива $_POST съдържанието на полето за имейла на потребителя и съдържанието на многоредовото поле със самото съобщение. Това правим като записваме ключовете на тези стойности в квадратните скоби след името на масива $_POST. Ключове за стойностите на тези полета са названията на полетата, указани във формата чрез атрибута name. Т.е. поставяме в квадратните скоби наименованията на полетата от формата, в случая „email“ и „komentar“.

След това задаваме двeте стойности на масива $_POST като стойности съответно на променливите $email и $message. По този начин тези две променливи ще съдържат имейла на потребителя и неговото съобщение. Наименованията на променливите $email и $message са произволно избрани и могат да бъдат всякакви други каквито пожелаете.

Накрая чрез функцията mail() задаваме аргументите:

1. имейла на който да се прати съобщението, в случая yourname@domain.com (трябва да го замените с вашия имейл адрес)
2. заглавието на съобщението, в случая „Съобщение от формата за контакти“
3. съдържанието на самото съобщение, което се явява стойност на променливата $message
4. имейла на потребителя, който се явява стойност на променливата $email – той ще се покаже в хедъра на имейла и е указан чрез „From: $email“

Веднага след края на скрипта сме задали изречението „Вашето съобщение беше изпратено успешно.“, което ще се показва при успешно пращане на съобщение.

Както се вижда, в горния скрипт заглавието на съобщението е предварително зададено във вид на низ като 2-ри аргумент на функцията mail() и винаги ще бъде „Съобщение от формата за контакти“. Може да усложним малко формата, като направим още едно поле специално за темата на съобщението, където потребителите сами да въвеждат заглавия на своите съобщения. Освен това ще поставим формата в таблица, за да подобрим външния й вид. Кода може да бъде следния:


<html>
<head>
<title>Форма за обратна връзка</title>
</head>

<body>

<h2 align=“center“>Форма за обратна връзка</h2>

<form action=“contactscript.php“ method=“POST“>

<table bgcolor=“#f0f0f0″ width=“500″ border=“0″ align=“center“ cellspacing=“3″ cellpadding=“3″>

<tr>
<td width=“140″>
Тема:
</td>
<td>
<input type=“text“ name=“zaglavie“ size=“35″ />
</td>
</tr>

<tr>
<td width=“140″>
Email за контакт:
</td>
<td>
<input type=“text“ name=“email“ size=“35″ />
</td>
</tr>

<tr>
<td width=“140″ valign=“top“>
Вашето съобщение:
</td>
<td>
<textarea name=“saobshtenie“ cols=“35″ rows=“6″>
</textarea>
<br />
<input type=“submit“ value=“Изпрати“ />
</td>
</tr>
</table>

</form>

</body>
</html>

В браузъра формата ще изглежда по следния начин:

Скрипта contactform.php може да изглежда така:

<?php

$email_na_podatel = $_POST[„email“];
$zaglavie_na_saobshtenie = $_POST[„zaglavie“];
$saobshtenie = $_POST[„saobshtenie“];
$ot_kogo = „From: $email_na_podatel“;

mail(„yourname@domain.com“, $zaglavie_na_saobshtenie, $saobshtenie, $ot_kogo);

?>

<html>
<head>
<title>Успешно пратено съобщение</title>
</head>
<body>

<h4>Благодарим ви! Вашето съобщение беше изпратено успешно.</h4><a href=“https://domain.com“>Кликнете тук</a> за да се върнете на началната страница.

</body>
</html>

Разликата между първия и втория скрипт е, че сега сме задали съдържанието на полето за заглавие на съобщението като стойност на променливата $zaglavie_na_saobshtenie, а съдържанието на допълнителния хедър, в който е имейла за обратна връзка с потребителя, сме задали като стойност на променливата $ot_kogo.

Веднага след скрипта имаме HTML код, който при успешно пращане показва съобщението „Благодарим ви! Вашето съобщение беше изпратено успешно.“ и съдържа връзка за връщане към началната страница на сайта.

За да работят и двата скрипта е необходимо да замените примерния имейл yourname@domain.com с вашия собствен имейл адрес.

Имайте предвид, че подобен скрипт ще ви върши работа само ако посетителите попълват коректно съответните полета. Ако обаче някой посетител забрави да напише например имейл адреса си вие ще получите съобщението, но няма да знаете къде да пратите отговора. Затова по принцип подобни скриптове съдържат по-сложен код, който примерно да извършва проверка дали не е оставено празно някое поле и дали в полето за имейла на потребителя присъстват символите „маймунско а“ (@) и „точка“ (.), които се съдържат във всеки един имейл адрес, т.е. проверява се дали е правилен формата на имейл адреса. Такива скриптове може да намерите и да си изтеглите от различни сайтове за безплатни PHP скриптове.

Трябва също да се има предвид, че скриптовете за пращане на съобщения ще работят от личния ви компютър само ако на него имате инсталиран mail сървър. Затова за да може да се пращат съобщения от подобни скриптове те трябва да са качени на хостинг, който има мейл сървър и поддържа PHP.