Jedna od najtraženijih funkcija na stranici je obrazac za prijavu ili narudžbu, s kojeg se podaci šalju na mail vlasnika stranice. U pravilu su takvi obrasci jednostavni i sastoje se od dva ili tri polja za unos podataka. Kako napraviti takav obrazac za narudžbu? To će zahtijevati korištenje HTML označnog jezika i PHP programskog jezika.
Sam HTML jezik za označavanje je jednostavan, samo trebate shvatiti kako i gdje staviti određene oznake. S programskim jezikom PHP stvari su malo kompliciranije.
Programeru nije teško izraditi takav obrazac, ali neke radnje mogu se činiti teškim za HTML programera.
Izrada html obrasca za slanje
Prvi red će biti sljedeći
Ajmo sad sve zajedno.
Sada neka polja u obrascu budu obavezna. Imamo sljedeći kod:
Izradite datoteku koja prihvaća podatke iz HTML obrasca
Ovo će biti datoteka pod nazivom send.php
U datoteci, u prvoj fazi, trebate primiti podatke iz polja posta. Da bismo to učinili, kreiramo dvije varijable:
$fio = $_POST["fio"];
$email = $_POST["e-pošta"];
Imenima varijabli u php prethodi znak $, a na kraju svakog retka stavlja se točka i zarez. $_POST je niz kojem se prosljeđuju podaci iz obrasca. U html obrascu navedena je metoda slanja = "post". Dakle, dvije varijable su preuzete iz html obrasca. U svrhu zaštite vaše stranice, ove varijable trebate proći kroz nekoliko filtara - php funkcija.
Prva funkcija će pretvoriti sve znakove koje će korisnik pokušati dodati u obrazac:
U ovom slučaju se nove varijable u php-u ne kreiraju, već se koriste postojeće. Filtar će pretvoriti znak "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
Druga funkcija dekodira url ako ga korisnik pokuša dodati u obrazac.
$fio = urldecode($fio);
$e-pošta = urldecode ($e-pošta);
S trećom funkcijom uklonit ćemo razmake s početka i kraja niza, ako ih ima:
$fio = trim($fio);
$e-pošta = trim($e-pošta);
Postoje i druge funkcije koje vam omogućuju filtriranje php varijabli. Njihovo korištenje ovisi o tome koliko se bojite da će napadač pokušati dodati programski kod ovom obliku slanja podataka na html poštu.
Potvrdite podatke proslijeđene iz HTML obrasca u PHP datoteku
Kako biste provjerili radi li ovaj kod, ako se podaci prenose, jednostavno ga možete prikazati na zaslonu pomoću funkcije echo:
odjek $fio;
jeka "
";
odjek $fio;
Drugi redak ovdje je potreban kako bi se odvojio izlaz php varijabli u različite retke.
Slanje primljenih podataka iz HTML obrasca na mail pomoću PHP-a
Za slanje podataka na poštu, trebate koristiti funkciju pošte u PHP-u.
mail("na koju adresu poslati", "predmet pisma", "Poruka (tijelo pisma)","Od: s koje e-pošte je pismo poslano \r\n");
Na primjer, trebate poslati podatke na e-poštu vlasnika ili upravitelja stranice [e-mail zaštićen]
Predmet e-pošte trebao bi biti jasan, a poruka e-pošte trebala bi sadržavati ono što je korisnik naveo u HTML obrascu.
mail(" [e-mail zaštićen]", "Aplikacija sa stranice", "Naziv:".$fio.". E-pošta: ".$email ,"Od: [e-mail zaštićen]\r\n");
Morate dodati uvjet koji će provjeriti je li obrazac poslan pomoću PHP-a na navedenu adresu e-pošte.
ako (pošta(" [e-mail zaštićen]", "Narudžba sa stranice", "Naziv:".$fio.". E-pošta: ".$email ,"Od: [e-mail zaštićen]\r\n"))
{
echo "poruka je uspješno poslana";
) drugo (
}
Tako će programski kod datoteke send.php, koja će poslati podatke HTML obrasca na mail, izgledati ovako:
$fio = $_POST["fio"];
$email = $_POST["e-pošta"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$e-pošta = urldecode ($e-pošta);
$fio = trim($fio);
$e-pošta = trim($e-pošta);
//echo $fio;
// jeka "
";
//echo $email;
ako (pošta(" [e-mail zaštićen]", "Aplikacija sa stranice", "Naziv:".$fio.". E-pošta: ".$email ,"Od: [e-mail zaštićen]\r\n"))
( echo "poruka je uspješno poslana";
) drugo (
echo "došlo je do pogrešaka tijekom slanja poruke";
}?>
Tri retka za provjeru prosljeđuju li se podaci u datoteku su komentirana. Ako je potrebno, mogu se ukloniti, jer su bili potrebni samo za otklanjanje pogrešaka.
Stavite HTML i PHP kod za podnošenje obrasca u jednu datoteku
U komentarima na ovaj članak mnogi ljudi pitaju kako napraviti i HTML obrazac i PHP kod za slanje podataka na poštu u jednoj datoteci, a ne u dvije.
Da biste implementirali ovaj posao, trebate postaviti HTML kod obrasca u datoteku send.php i dodati uvjet koji će provjeravati prisutnost varijabli u POST polju (ovaj se niz prosljeđuje iz obrasca). Odnosno, ako varijable u nizu ne postoje, tada korisniku morate pokazati obrazac. U suprotnom, trebate uzeti podatke iz niza i poslati ih primatelju.
Pogledajmo kako promijeniti PHP kod u datoteci send.php:
//provjeriti postoje li varijable u POST polju
if(!isset($_POST["fio"]) i !isset($_POST["e-pošta"]))(
?> ) drugo (
//pokaži obrazac
$fio = $_POST["fio"];
$email = $_POST["e-pošta"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$e-pošta = urldecode ($e-pošta);
$fio = trim($fio);
$e-pošta = trim($e-pošta);
ako (pošta(" [e-mail zaštićen]", "Aplikacija sa stranice", "Naziv:".$fio.". E-pošta: ".$email ,"Od: [e-mail zaštićen]\r\n"))(
echo "Poruka je uspješno poslana";
) drugo (
echo "Došlo je do pogreške tijekom slanja poruke";
}
}
?>
Provjeravamo postojanje varijable u POST polju pomoću funkcije PHP isset(). Uskličnik ispred ove funkcije u uvjetu znači negaciju. Odnosno, ako varijabla ne postoji, onda trebamo pokazati svoj oblik. Da nisam stavio uskličnik, onda bi uvjet doslovno značio - "ako postoji, onda pokaži oblik". A to je u našem slučaju pogrešno. Naravno, možete ga preimenovati u index.php. Ako preimenujete datoteku, ne zaboravite preimenovati naziv datoteke i u retku