Una dintre cele mai solicitate funcții de pe site este cererea sau formularul de comandă, datele din care sunt trimise prin poștă proprietarului site-ului. De regulă, astfel de formulare sunt simple și constau din două sau trei câmpuri pentru introducerea datelor. Cum creezi un astfel de formular de comandă? Acest lucru necesită utilizarea limbajului de marcare HTML și a limbajului de programare PHP.
Limbajul de marcare HTML în sine este simplu, trebuie doar să vă dați seama cum și unde să puneți anumite etichete. Cu limbajul de programare PHP, lucrurile sunt puțin mai complicate.
Nu va fi dificil pentru un programator să creeze un astfel de formular, dar unui codificator HTML poate fi dificil să facă unele dintre acțiuni.
Creați un formular pentru trimiterea datelor în html
Prima linie va fi următoarea
Acum hai să punem totul împreună.
Acum vom face obligatorii câmpurile din formular. Avem următorul cod:
Creați un fișier care acceptă date dintr-un formular HTML
Acesta va fi un fișier numit send.php
În fișier, în prima etapă, trebuie să acceptați date din matricea post. Pentru a face acest lucru, creăm două variabile:
$ fio = $ _POST ["fio"];
$ email = $ _POST ["e-mail"];
Numele variabilelor PHP sunt precedate de un semn $ și un punct și virgulă la sfârșitul fiecărei linii. $ _POST este o matrice la care sunt transmise datele din formular. În formularul html, metoda de trimitere este specificată ca metodă = „post”. Deci, două variabile sunt preluate din formularul html. Pentru a vă proteja site-ul, trebuie să treceți aceste variabile prin mai multe filtre - funcții php.
Prima funcție convertește toate caracterele pe care utilizatorul încearcă să le adauge în formular:
În acest caz, variabilele noi în php nu sunt create, ci sunt folosite cele existente. Ceea ce va face filtrul este să convertească caracterul "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
A doua funcție va decoda adresa URL dacă utilizatorul încearcă să o adauge în formular.
$ fio = urldecode ($ fio);
$ email = urldecode ($ email);
În a treia funcție, vom elimina spații de la începutul și de la sfârșitul șirului, dacă există:
$ fio = trim ($ fio);
$ email = trim ($ email);
Există și alte funcții pentru a filtra variabilele php. Utilizarea lor depinde de cât de mult vă temeți că un atacator va încerca să adauge cod la această formă de trimitere a datelor către mail html.
Validarea datelor transmise din formularul HTML în fișierul PHP
Pentru a verifica dacă acest cod funcționează, dacă datele sunt transmise, îl puteți afișa pur și simplu pe ecran folosind funcția ecou:
echo $ fio;
ecou"
";
echo $ email;
A doua linie este aici pentru a împărți rezultatul variabilelor php în linii diferite.
Trimiterea datelor primite din formularul HTML la e-mail folosind PHP
Pentru a trimite date la e-mail, trebuie să utilizați funcția de e-mail în PHP.
poștă („la ce adresă se trimite”, „subiectul scrisorii”, „Mesaj (corpul mesajului)”, „De la: de la ce adresă de e-mail este trimisă scrisoarea \ r \ n”);
De exemplu, trebuie să trimiteți date la adresa de e-mail a proprietarului sau managerului site-ului [email protected]
Subiectul e-mailului ar trebui să fie clar, iar mesajul de e-mail trebuie să conțină ceea ce utilizatorul a specificat în formularul HTML.
Poștă (" [email protected]"," Aplicație de pe site "," Nume complet: ". $ Fio.". E-mail: „. $ Email,” De la: [email protected]\ r \ n ");
Trebuie să adăugați o condiție care va verifica dacă formularul a fost trimis folosind PHP la adresa de e-mail specificată.
dacă (mail (" [email protected]"," Comanda de pe site "," Nume complet: ". $ Fio.". E-mail: „. $ Email,” De la: [email protected]\ r \ n "))
{
echo „mesaj trimis cu succes”;
) altfel (
}
Astfel, codul de program al fișierului send.php care va trimite datele formularului HTML către e-mail va arăta astfel:
$ 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;
// ecou "
";
// echo $ email;
dacă (mail (" [email protected]"," Aplicație de pe site "," Nume complet: ". $ Fio.". E-mail: „. $ Email,” De la: [email protected]\ r \ n "))
(echo „mesaj trimis cu succes”;
) altfel (
echo „au apărut erori la trimiterea mesajului”;
}?>
Trei rânduri pentru a verifica dacă datele transmise fișierului sunt comentate. Dacă este necesar, le puteți elimina, deoarece au fost necesare doar pentru depanare.
Punerea codului HTML și PHP pentru trimiterea formularului într-un singur fișier
În comentariile acestui articol, mulți oameni își pun întrebarea cum să creeze atât formularul HTML, cât și codul PHP pentru trimiterea datelor către e-mail într-un singur fișier, nu două.
Pentru a implementa o astfel de muncă, trebuie să puneți codul HTML al formularului în fișierul send.php și să adăugați o condiție care va verifica prezența variabilelor în matricea POST (această matrice este transmisă din formular). Adică, dacă variabilele din matrice nu există, atunci trebuie să afișați formularul utilizatorului. În caz contrar, trebuie să acceptați datele din matrice și să le trimiteți destinatarului.
Să vedem cum să schimbăm codul PHP în fișierul send.php:
// verifică dacă variabilele există în matricea POST
if (! isset ($ _ POST ["fio"]) și! isset ($ _ POST ["email"])) (
?> ) altfel (
// afișează formularul
$ 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);
dacă (mail (" [email protected]"," Aplicație de pe site "," Nume complet: ". $ Fio.". E-mail: „. $ Email,” De la: [email protected]\ r \ n ")) (
echo „Mesajul trimis cu succes”;
) altfel (
echo „Au fost erori la trimiterea mesajului”;
}
}
?>
Verificăm existența unei variabile în matricea POST folosind funcția PHP isset (). Un semn de exclamare înaintea acestei funcție într-o condiție înseamnă negație. Adică, dacă variabila nu există, atunci trebuie să ne arătăm forma. Dacă nu aș fi pus un semn de exclamare, atunci condiția ar însemna literal - „dacă există, atunci arată forma”. Și acest lucru este greșit în cazul nostru. Desigur, îl puteți redenumi în index.php. Dacă redenumiți fișierul, atunci nu uitați să redenumiți numele fișierului și în linie