Поставянето на форма за обратна връзка (форма за контакти, feedback form, contact form) вече е почти задължително за всеки уеб сайт. Фо̀рмата за обратна връзка е много полезен инструмент, който дава възможност на посетителите на сайта, веднага да осъществят контакт с вас като ви изпратят своите въпроси, коментари и пр. директно от страницата за контакти, без да е необходимо да отварят електронната си поща. Затова е силно препоръчително на страницата ви за контакти да имате и форма за обратна връзка, освен адрес, телефон и имейл, които също трябва да бъдат записани на тази страница.
Създаване на проста форма за обратна връзка (PHP, HTML)
За да направите PHP скрипт за изпращане на съобщения от сайта ви, може да използвате вградената функция mail(). Функцията mail()
може да съдържа в кръглите скоби няколко елемента (наричат се аргументи), като някои от тях са задължителни.
По-конкретно, в кръглите скоби задължително трябва да присъстват следните елементи във вид на низове или като имена на променливите, на които е зададено да съдържат тези елементи като стойност:
- Имейл адрес, на който ще бъде изпратено съобщението (получател – вашият имейл адрес);
- Тема (заглавието) на съобщението;
- Текст на самото съобщение;
- Допълнителен хедър с имейла на потребителя (подател), т.е. имейл, на който да изпратите вашия отговор.
При записването на елементите в кръглите скоби трябва да се спазва точно този ред, в който те са изброени по-горе. Отделните елементи се отделят един от друг със запетаи. Следователно синтаксисът на функцията е следния:
mail(вашият имейл, тема, съобщение, имейл на подателя)
За да може текстът на съобщението да се разположи във вид на аргумент, в кръглите скоби на функцията mail()
, след попълването му от потребителя, той трябва да бъде присвоен като стойност на някаква променлива, например $message
. В такъв случай в кръглите скоби съобщението ще присъства под формата на променливата $message
, разположена на трета позиция – след имейла, на който се изпраща съобщението и заглавието. Имейлът, на който ще се изпраща съобщението (вашият имейл), може да се зададе директно като низ, например yourname@mysupersite.com
.
Съдържанието на първия и втория аргумент на функцията mail()
– вашият имейл и темата на съобщението – влизат в горната част (header) на електронното писмо. Това е частта на всеки имейл, която се намира над самото съобщение. Електронният адрес, на който е изпратено писмото (вашият имейл, на който ще получавате съобщенията от формата) се намира в хедъра на реда обозначаван обикновено като „To:“ или „До:“, а темата (заглавието) на съобщението се намира на реда, обозначаван обикновено като „Subject:“ или „Тема:“.
След хедъра на писмото следва основната му част – самият текст на съобщението (message), който се задава като трети аргумент на функцията mail()
. След това в кръглите скоби на mail()
може да има допълнителни хедъри, които в електронните писма са обозначени като „From:“ или „От:“, „Cc:“ или „Копие до:“ и „Bcc:“ или „Скрито копие до:“. От тях задължителен е допълнителният хедър „From:„, който съдържа информация за имейла на подателя на съобщението.
Информацията от 4-те аргумента на функцията mail()
може да бъде включена в кръглите скоби, като низове от символи или във вид на имена на променливите, които съдържат като стойност съответните низове. Например като втори елемент (тема или заглавие на съобщението) може да се зададе заглавие във вид на низ (дума или няколко думи), което ще бъде едно и също при всички изпратени съобщения, например „Съобщение от формата за контакти“ или „Коментар от потребител“ и т.н. Ако във формата има специално поле за заглавие (тема) на съобщението, тогава всеки път ще имаме различно заглавие, написано от съответния потребител. В такъв случай ще извличаме това заглавие от формата чрез масива $_POST
и ще го присвояваме на някаква променлива, например $subject
, така че заглавието на писмото ще присъства в кръглите скоби на функцията mail()
във вид на променливата $subject
.
Създаване на HTML формата
Първо да направим самата форма, като ползваме познатите HTML тагове. Най-простата форма за обратна връзка трябва да съдържа поне 2 полета: едно поле за имейла на посетителя, на който вие да изпратите отговора си и едно многоредово поле – за самото съобщение. Фо̀рмата може да представлява нещо подобно:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Форма за обратна връзка</title>
</head>
<body>
<form action="contactscript.php" method="POST">
Имейл:<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.
В браузъра формата ще изглежда по следния начин:
Създаване на PHP скрипта
Сега трябва да направим скрипта contactscript.php, който ще изпраща имейл съобщение с попълнените във формата данни, до вашия имейл адрес.
Скриптът може да изглежда по следния начин:
<?php
$email = $_POST["email"];
$message = $_POST["komentar"];
mail("yourname@mysupersite.com", "Съобщение от формата за контакти", $message, "From: $email");
?>
Вашето съобщение е изпратено успешно!
Към различните стойности на даден масив може да се обръщате като записвате в квадратни скоби идентификационния номер или ключа на съответната стойност. В горния код извличаме чрез масива $_POST
съдържанието на полето за имейла на потребителя и съдържанието на многоредовото поле (съобщението). Това правим като записваме ключовете на тези стойности в квадратните скоби след името на масива $_POST
. Ключове за стойностите на тези полета са названията на полетата, указани във формата чрез атрибута name
. Т.е. поставяме в квадратните скоби наименованията на полетата от формата, в случая „email“ и „komentar“.
След това задаваме двете стойности на масива $_POST
като стойности съответно на променливите $email
и $message
. По този начин тези две променливи ще съдържат имейла на потребителя и неговото съобщение. Наименованията на променливите $email и $message са произволно избрани и могат да бъдат всякакви други, каквито пожелаете.
Накрая чрез функцията mail() задаваме аргументите:
- Имейл адреса, на който да се прати съобщението, в случая yourname@mysupersite.com (трябва да го замените с вашия имейл адрес),
- Заглавието на съобщението, в случая „Съобщение от формата за контакти“,
- Съдържанието на самото съобщение, което се явява стойност на променливата
$message
, - Имейл на потребителя, който се явява стойност на променливата
$email
– той ще се покаже в хедъра на имейла и е указан чрез „From: $email“.
Веднага след края на скрипта сме задали изречението „Вашето съобщение беше изпратено успешно.“, което ще се показва при успешно пращане на съобщение.
Както се вижда, в горния скрипт заглавието на съобщението е предварително зададено във вид на низ като 2-ри аргумент на функцията mail()
и винаги ще бъде „Съобщение от формата за контакти“. Може да усложним малко формата, като направим още едно поле специално за темата на съобщението, където потребителите сами да въвеждат заглавия на своите съобщения. Кодът може да бъде следния:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Форма за обратна връзка</title>
</head>
<body>
<h2>Форма за обратна връзка</h2>
<form action="contactscript2.php" method="POST">
<table>
<tr><td>
Тема:
</td><td>
<input type="text" name="zaglavie" size="35" />
</td></tr><tr>
<td>
Имейл за контакт:
</td>
<td>
<input type="text" name="email" size="35" />
</td></tr><tr>
<td>
Вашето съобщение:
</td><td>
<textarea name="message" 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"];
$message = $_POST["message"];
$ot_kogo = "From: $email_na_podatel";
mail("yourname@mysupersite.com", $zaglavie_na_saobshtenie, $message, $ot_kogo);
?>
<html>
<head>
<title>Успешно пратено съобщение</title>
</head>
<body>
<h4>Благодарим ви! Вашето съобщение беше изпратено успешно.</h4>
<a href="https://mysupersite.com">Кликнете тук</a> за да се върнете на началната страница.
</body>
</html>
Разликата между първия и втория скрипт е, че сега сме задали съдържанието на полето за заглавие като стойност на променливата $zaglavie_na_saobshtenie
, а съдържанието на допълнителния хедър, в който е имейла за обратна връзка с потребителя, сме задали като стойност на променливата $ot_kogo
.
Веднага след скрипта имаме HTML код, който при успешно пращане показва съобщението „Благодарим ви! Вашето съобщение беше изпратено успешно.“ и съдържа връзка за връщане към началната страница на сайта.
За да работят и двата скрипта, заменете примерния имейл yourname@mysupersite.com с вашия собствен имейл адрес.
Имайте предвид, че подобен скрипт ще ви върши работа само ако посетителите попълват коректно съответните полета. Ако обаче някой посетител забрави да напише например имейл адреса си, вие ще получите съобщението, но няма да знаете къде да пратите отговора. Затова по принцип подобни скриптове съдържат по-сложен код, който извършва проверка дали не е оставено празно някое поле и дали в полето за имейл на потребителя присъстват символите @ и „точка“ (.), които се съдържат във всеки един имейл адрес, т.е. проверява се дали е правилен форма̀та на имейл адреса. Такива скриптове може да намерите и да изтеглите от различни сайтове за безплатни PHP скриптове.
Трябва също да се има предвид, че скриптовете за пращане на съобщения ще работят от личния ви компютър, само ако на него имате инсталиран mail сървър. Затова за да може да се пращат съобщения от подобни скриптове, те трябва да са качени на хостинг, който има мейл сървър и поддържа PHP.