Jedna od najtraženijih funkcija na stranici je formular za prijavu ili narudžbu, sa koje se podaci šalju na mail vlasnika stranice. Po pravilu, takvi obrasci su jednostavni i sastoje se od dva ili tri polja za unos podataka. Kako kreirati takav obrazac za narudžbu? Ovo će zahtijevati korištenje HTML jezika za označavanje i PHP programskog jezika.
Sam jezik za označavanje HTML-a je jednostavan, samo trebate shvatiti kako i gdje staviti određene oznake. Sa programskim jezikom PHP, stvari su malo komplikovanije.
Programeru nije teško napraviti takav obrazac, ali neke radnje mogu izgledati teške za HTML kodera.
Kreiranje html obrasca za slanje
Prvi red će biti sljedeći
Hajde da sve to spojimo.
Sada neka polja u obrascu budu obavezna. Imamo sljedeći kod:
Kreirajte datoteku koja prihvata podatke iz HTML obrasca
Ovo će biti datoteka pod nazivom send.php
U datoteci, u prvoj fazi, morate 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 reda stavlja se tačka i zarez. $_POST je niz u koji se prosljeđuju podaci iz obrasca. U html formi je specificiran metod slanja="post". Dakle, dvije varijable su preuzete iz html forme. U svrhu zaštite vaše stranice, ove varijable morate proći kroz nekoliko filtera - php funkcija.
Prva funkcija će pretvoriti sve znakove koje će korisnik pokušati dodati u obrazac:
U ovom slučaju, nove varijable u php-u se ne kreiraju, već se koriste postojeće. Ono što će filter učiniti je pretvoriti znak "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
Druga funkcija dekodira url ako ga korisnik pokuša dodati u obrazac.
$fio = urldecode($fio);
$email = urldecode($email);
Sa trećom funkcijom ćemo ukloniti razmake s početka i kraja niza, ako ih ima:
$fio = trim($fio);
$email = trim($email);
Postoje i druge funkcije koje vam omogućavaju da filtrirate php varijable. Njihova upotreba zavisi od toga koliko se plašite da će napadač pokušati da doda programski kod ovom obliku slanja podataka u html poštu.
Potvrdite podatke proslijeđene iz HTML obrasca u PHP datoteku
Da biste provjerili radi li ovaj kod, ako se podaci prenose, možete ga jednostavno prikazati na ekranu koristeći echo funkciju:
echo $fio;
eho"
";
echo $email;
Drugi red ovde je potreban da bi se odvojio izlaz php varijabli u različite redove.
Slanje primljenih podataka iz HTML obrasca na mail koristeći PHP
Da biste poslali podatke na poštu, morate 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-mail vlasnika ili menadžera stranice [email protected]
Predmet e-pošte treba da bude jasan, a poruka e-pošte treba da sadrži ono što je korisnik naveo u HTML obrascu.
mail(" [email protected]", "Aplikacija sa sajta", "Naziv:".$fio.". Email: ".$email ,"Od: [email protected]\r\n");
Morate dodati uslov koji će provjeriti da li je obrazac poslat pomoću PHP-a na navedenu adresu e-pošte.
if (mail(" [email protected]", "Narudžba sa stranice", "Naziv:".$fio.". Email: ".$email ,"Od: [email protected]\r\n"))
{
echo "poruka je uspješno poslana";
) drugo (
}
Tako će programski kod datoteke send.php, koji ć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);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
//echo $fio;
// echo "
";
//echo $email;
if (mail(" [email protected]", "Aplikacija sa sajta", "Naziv:".$fio.". Email: ".$email ,"Od: [email protected]\r\n"))
( echo "poruka je uspješno poslana";
) drugo (
echo "došlo je do greške prilikom slanja poruke";
}?>
Tri reda za provjeru da li se podaci prosljeđuju u datoteku su komentirane. Ako je potrebno, mogu se ukloniti, jer su bili potrebni samo za otklanjanje grešaka.
Stavite HTML i PHP kod za podnošenje obrasca u jednu datoteku
U komentarima na ovaj članak, mnogi ljudi pitaju kako da i HTML obrazac i PHP kod za slanje podataka na poštu budu u jednoj datoteci, a ne u dvije.
Da biste implementirali ovaj posao, potrebno je da postavite HTML kod forme u datoteku send.php i dodate uslov koji će provjeriti prisustvo varijabli u POST nizu (ovaj niz se prenosi iz obrasca). To jest, ako varijable u nizu ne postoje, onda morate pokazati korisniku obrazac. U suprotnom, trebate uzeti podatke iz niza i poslati ih primaocu.
Pogledajmo kako promijeniti PHP kod u send.php datoteci:
//provjerava da li varijable postoje u POST nizu
if(!isset($_POST["fio"]) i !isset($_POST["email"]))(
?> ) drugo (
//prikaži formu
$fio = $_POST["fio"];
$email = $_POST["e-pošta"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
if (mail(" [email protected]", "Aplikacija sa sajta", "Naziv:".$fio.". Email: ".$email ,"Od: [email protected]\r\n"))(
echo "Poruka je uspješno poslana";
) drugo (
echo "Došlo je do greške prilikom slanja poruke";
}
}
?>
Provjeravamo postojanje varijable u POST nizu s PHP isset() funkcijom. Uskličnik ispred ove funkcije u stanju znači negaciju. Odnosno, ako varijabla ne postoji, onda moramo pokazati naš oblik. Da nisam stavio uzvičnik, onda bi uslov doslovno značio - "ako postoji, onda pokaži formu". A to je pogrešno u našem slučaju. Naravno, možete ga preimenovati u index.php. Ako preimenujete datoteku, onda ne zaboravite preimenovati naziv datoteke iu retku