Ako poslať webovú stránku e-mailom? Najjednoduchšia forma odosielania dát emailom pomocou HTML a PHP Ako poslať záložku emailom
Jednou z najobľúbenejších funkcií na stránke je prihláška alebo objednávkový formulár, z ktorého sa údaje odosielajú e-mailom majiteľovi stránky. Takéto formuláre sú spravidla jednoduché a pozostávajú z dvoch alebo troch polí na zadávanie údajov. Ako vytvoriť takýto objednávkový formulár? To si vyžaduje používanie jazyka HTML značky a programovací jazyk PHP.
Samotný značkovací jazyk HTML je jednoduchý, musíte len prísť na to, ako a kam umiestniť určité značky. S programovacím jazykom PHP sú veci trochu komplikovanejšie.
Pre programátora nie je vytvorenie takéhoto formulára ťažké, no pre dizajnéra rozloženia HTML sa niektoré akcie môžu zdať ťažké.
Vytvorte formulár na odoslanie údajov v html
Prvý riadok bude nasledovný
Teraz poďme všetko dokopy.
Teraz urobme polia vo formulári povinnými. Máme nasledujúci kód:
Vytvorte súbor, ktorý prijíma údaje z formulára HTML
Toto bude súbor s názvom send.php
V súbore musíte v prvej fáze prijať údaje z poľa príspevkov. Aby sme to dosiahli, vytvoríme dve premenné:
$fio = $_POST["fio"];
$email = $_POST["e-mail"];
Názvy premenných v PHP sú označené znakom $ a na konci každého riadku je umiestnená bodkočiarka. $_POST je pole, do ktorého sa odosielajú údaje z formulára. V html formulári je spôsob odoslania uvedený ako method="post". Z toho sa teda berú dve premenné html formuláre. Aby ste ochránili svoju stránku, musíte tieto premenné preniesť cez niekoľko filtrov – php funkcie.
Prvá funkcia skonvertuje všetky znaky, ktoré sa používateľ pokúsi pridať do formulára:
V tomto prípade sa v php nevytvárajú nové premenné, ale používajú sa existujúce. Filter urobí transformáciu postavy "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
Druhá funkcia dekóduje adresu URL, ak sa ju používateľ pokúsi pridať do formulára.
$fio = urldecode($fio);
$email = urldecode($email);
Pomocou tretej funkcie odstránime medzery zo začiatku a konca riadku, ak nejaké existujú:
$fio = trim($fio);
$email = trim($email);
Existujú ďalšie funkcie, ktoré vám umožňujú filtrovať premenné php. Ich použitie závisí od toho, ako sa obávate, že sa útočník pokúsi pridať kód programu do tohto formulára na odoslanie e-mailu vo formáte HTML.
Validácia dát prenesených z HTML formulára do PHP súboru
Ak chcete skontrolovať, či tento kód funguje a či sa údaje prenášajú, môžete ho jednoducho zobraziť na obrazovke pomocou funkcie echo:
echo $fio;
ozvena"
";
echo $email;
Druhý riadok je potrebný na oddelenie výstupu php premenných do rôznych riadkov.
Odosielanie prijatých údajov z HTML formulára na email pomocou PHP
Na odosielanie údajov e-mailom je potrebné použiť funkciu pošty v PHP.
mail("na ktorú adresu poslať", "predmet listu", "Správa (telo listu)","Od: z ktorého emailu je list odoslaný \r\n");
Napríklad musíte odoslať údaje na e-mail vlastníka alebo manažéra stránky [chránený e-mailom].
Predmet listu by mal byť jasný a správa listu by mala obsahovať to, čo používateľ uviedol vo formulári HTML.
mail(" [chránený e-mailom]", "Aplikácia zo stránky", "Celé meno:".$fio.". E-mail: ".$email ,"Od: [chránený e-mailom]\r\n");
Je potrebné pridať podmienku, ktorá skontroluje, či bol formulár odoslaný pomocou PHP na zadanú emailovú adresu.
if (mail(" [chránený e-mailom]", "Objednávka zo stránky", "Celé meno:".$fio.". E-mail: ".$email ,"Od: [chránený e-mailom]\r\n"))
{
echo "správa bola úspešne odoslaná";
) inak (
}
Programový kód súboru send.php, ktorý odošle údaje formulára HTML na e-mail, bude teda vyzerať takto:
$fio = $_POST["fio"];
$email = $_POST["e-mail"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
//echo $fio;
//echo "
";
//echo $email;
if (mail(" [chránený e-mailom]", "Aplikácia zo stránky", "Celé meno:".$fio.". E-mail: ".$email ,"Od: [chránený e-mailom]\r\n"))
( echo "správa bola úspešne odoslaná";
) inak (
echo "pri odosielaní správy sa vyskytli chyby";
}?>
Zakomentované sú tri riadky na kontrolu, či sa údaje prenášajú do súboru. V prípade potreby ich možno odstrániť, pretože boli potrebné iba na ladenie.
HTML a PHP kód na odoslanie formulára umiestňujeme do jedného súboru
V komentároch k tomuto článku si veľa ľudí kladie otázku, ako zabezpečiť, aby HTML formulár aj PHP kód na odosielanie dát na email boli v jednom súbore a nie v dvoch.
Na implementáciu tejto práce je potrebné umiestniť HTML kód formulára do súboru send.php a pridať podmienku, ktorá bude kontrolovať prítomnosť premenných v poli POST (toto pole sa odosiela z formulára). To znamená, že ak premenné v poli neexistujú, musíte používateľovi zobraziť formulár. V opačnom prípade musíte prijať údaje z poľa a odoslať ich príjemcovi.
Pozrime sa, ako zmeniť kód PHP v súbore send.php:
//kontrola, či existujú premenné v poli POST
if(!isset($_POST["fio"]) a !isset($_POST["e-mail"]))(
?> ) inak (
//zobraziť formulár
$fio = $_POST["fio"];
$email = $_POST["e-mail"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
if (mail(" [chránený e-mailom]", "Aplikácia zo stránky", "Celé meno:".$fio.". E-mail: ".$email ,"Od: [chránený e-mailom]\r\n"))(
echo "Správa bola úspešne odoslaná";
) inak (
echo "Pri odosielaní správy sa vyskytli chyby";
}
}
?>
Existenciu premennej v poli POST skontrolujeme pomocou PHP funkcie isset(). Výkričník pred touto funkciou v podmienke znamená negáciu. To znamená, že ak premenná neexistuje, musíme ukázať našu formu. Ak by som neuviedol výkričník, podmienka by doslova znamenala „ak existuje, ukážte formulár“. A to je v našom prípade nesprávne. Samozrejme, môžete ho premenovať na index.php. Ak premenujete súbor, nezabudnite premenovať názov súboru v riadku