Оценка на читателите: / 5
Слаба статияОтлична статия 

PHP - функция mail

Изпращането на писмо от форма за обратна връзка е един конкретен пример за обработка на данни от формуляр. За изпращане на писмо (e-mail) на даден адрес се използва PHP функцията mail. Тази фукнция изглежда най-общо така:

mail(do,tema,poslanie,headers,parametri)

Значението на параметрите, които се използват с функцията mail, е както следва:

  • do - адреса, на който ще бъде изпратено писмото.
  • tema - темата на писмото.
  • poslanie - самото съобщение на писмото.
  • headers - това е допълнителна информация, която може да се изпрати с писмото - напр. поле From, Bcc, Cc и др. Тези елементи трябва да са отделени един от друг със символа за нов ред /r/n. За разлика от изброените do, tema, poslanie, които са задължителни елементи на функцията mail, headers са незадължителни и могат да бъдат изпуснати по желание.
  • parameteri - допълнителни параметри за програмата, с която се изпраща писмото. Това също е незадължителен елемент и може да бъде изпуснат от функцията mail.

Нека разгледаме и един конкретен пример за изпращане на писмо:

<?php
$do = "georgi@example.com";
$tema = "Privet!";
$poslanie = "Здравей, стари друже, имаш ли време за една разходка до Витоша следващата неделя?";
$ot = "todor@example.com";
$headers = "From: $ot"."/r/n"."Cc:plamen@example.com";
mail($do,$tema,$poslanie,$headers);
echo "Писмото е изпратено успешно.";
?>

В този пример e-mail ще бъде изпратен на адрес georgi@example.com и plamen@example.com, като в полето From ще фигурира e-mail адресът на изпращача, todor@example.com

Простичкият пример използва предварително зададени стойности за адреса на изпращача, темата на писмото и самото послание, както и адреса на получателя - те се съдържат в променливите $ot, $tema, $poslanie, $do. В една форма за обратна връзка адресът на получателя е фиксиран - това е e-mail адресът, на който ще получавате писмата, но адресът на изпращача и посланието на писмото се въвеждат от потребителя. Тези данни могат да се използват от програмата, изпращаща писмото, посредством функциите $_POST, $_GET или $_REQUEST.

Следва пример за програма, изпращаща писмо, която използва въведени от потребителя e-mail адрес (в поле с име name="adres_na_izprashtacha"), тема на писмото (name="tema_na_pismoto") и послание (name="tekst_na_pismoto"). Програмата прави предварителна проверка дали формата е попълнена и ако не е - извежда самата форма, в противен случай използва въведените данни, за да изпрати писмо до зададения адрес (georgi@example.com).:

<html>
<body>
<?php
if (!isset($_POST['adres_na_izprashtacha']))
//проверка дали формата е попълнена, ако не е - извеждане на самата форма
{
echo "<form method='post' action='mail.php'>
Вашият e-mail адрес: <input name='adres_na_izprashtacha' type='text' /><br />
Тема на писмото: <input name='tema_na_pismoto' type='text' /><br />
Вашето послание:<br />
<textarea name='tekst_na_pismoto' rows='10' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
}
else {
//ако формата е попълнена, изпращане на писмото
$do = "georgi@example.com";
$tema = $_POST['tema_na_pismoto'];
$poslanie = $_POST['tekst_na_pismoto'];
$ot = $_POST[adres_na_izprashtacha];
$headers = "From: $ot";
mail($do,$tema,$poslanie,$headers);
echo "Писмото е изпратено успешно.";
}
?>
</body>
</html>

Тази кратка програма има много несъвършенства - лесно може да бъде използвана за изпращане на спам писма, не прави никаква проверка дали са въведени валидни име, съобщение и e-mail адрес и не дава възможност на потребителя да получи копие от своето съобщение.

Напълно работеща форма за обратна връзка с включени защита от спам, проверка за правилно попълнени полета с име, e-mail адрес и с възможност за изпращане на копие от писмото до посочения от посетителя e-mail адрес можете да разгледате в статията Форма за обратна връзка

 

Ако решите, че "как се прави сайт" ръководството може да бъде полезно и за други хора, моля гласувайте за сайта:

+добави в любими.ком Елате в .: BGtop.net :. Топ класацията на българските сайтове и гласувайте за този сайт!!!

Ако желаете да оставите коментар към статията, трябва да се регистрирате.