Una dintre cele mai populare funcții de pe site este cererea sau formularul de comandă, datele din care sunt trimise prin email proprietarului site-ului. De regulă, astfel de formulare sunt simple și constau din două sau trei câmpuri pentru introducerea datelor. Cum se creează 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.
Pentru un programator, crearea unui astfel de formular nu este dificilă, dar pentru un designer de layout HTML, unele acțiuni pot părea dificile.
Creați un formular de trimitere a datelor în html
Prima linie va fi după cum urmează
Acum să punem totul împreună.
Acum să facem obligatoriu câmpurile din formular. Avem următorul cod:
Creați un fișier care acceptă date din formularul 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 de variabile în PHP sunt precedate de un semn $ și un punct și virgulă este plasat la sfârșitul fiecărei linii. $_POST este o matrice în care sunt trimise datele din formular. În formularul html, metoda de trimitere este specificată ca method="post". Deci, sunt acceptate două variabile 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 va converti toate caracterele pe care utilizatorul va încerca să le adauge în formular:
În acest caz, variabilele noi nu sunt create în php, ci sunt folosite cele existente. Ceea ce va face filtrul este să transforme personajul "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
A doua funcție decodifică adresa URL dacă utilizatorul încearcă să o adauge în formular.
$fio = urldecode($fio);
$email = urldecode($email);
Cu a treia funcție vom elimina spații de la începutul și sfârșitul liniei, dacă există:
$fio = trim($fio);
$email = trim($email);
Există și alte funcții care vă permit să filtrați variabilele php. Utilizarea lor depinde de cât de îngrijorat sunteți că un atacator va încerca să adauge cod de program la acest formular de trimitere prin e-mail html.
Validarea datelor transferate din formularul HTML în fișierul PHP
Pentru a verifica dacă acest cod funcționează și dacă datele sunt transferate, îl puteți afișa pur și simplu pe ecran folosind funcția ecou:
echo $fio;
ecou"
";
echo $fio;
A doua linie de aici este necesară pentru a separa rezultatul variabilelor php în linii diferite.
Trimiterea datelor primite dintr-un formular HTML la e-mail folosind PHP
Pentru a trimite date prin e-mail, trebuie să utilizați funcția de e-mail în PHP.
mail("la ce adresa se trimite", "subiectul scrisorii", "Mesajul (corpul scrisorii)","De la: de la care email este trimisa scrisoarea \r\n");
De exemplu, trebuie să trimiteți date către e-mailul proprietarului sau managerului site-ului [email protected].
Subiectul scrisorii trebuie să fie clar, iar mesajul scrisorii trebuie să conțină ceea ce utilizatorul a specificat în formularul HTML.
Poștă(" [email protected]", "Cerere de pe site", "Nume complet:".$fio.". E-mail: ".$email ,"De la: [email protected]\r\n");
Este necesar să adăugați o condiție care să verifice 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 la 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]", "Cerere 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 sunt transferate în fișier sunt comentate. Dacă este necesar, acestea pot fi eliminate, deoarece au fost necesare doar pentru depanare.
Am plasat codul HTML și PHP pentru trimiterea formularului într-un singur fișier
În comentariile acestui articol, mulți oameni pun întrebarea cum să vă asigurați că atât formularul HTML, cât și codul PHP pentru trimiterea datelor la e-mail sunt într-un singur fișier, și nu în două.
Pentru a implementa această lucrare, trebuie să plasaț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 trimisă din formular). Adică, dacă variabilele din matrice nu există, atunci trebuie să arătați utilizatorului formularul. În caz contrar, trebuie să primiți date din matrice și să le trimiteți destinatarului.
Să vedem cum să schimbăm codul PHP din fișierul send.php:
//verifică dacă variabile există în matricea POST
if(!isset($_POST["fio"]) și !isset($_POST["email"]))(
?> ) altfel (
//arata 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]", "Cerere de pe site", "Nume complet:".$fio.". E-mail: ".$email ,"De la: [email protected]\r\n"))(
echo „Mesajul trimis cu succes”;
) altfel (
echo „Au apărut erori la trimiterea mesajului”;
}
}
?>
Verificăm existența unei variabile în tabloul POST cu funcția PHP isset(). Un semn de exclamare înainte de această 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 semnul exclamării, condiția ar însemna literal „dacă există, atunci arătați forma”. Și acest lucru este greșit în cazul nostru. Desigur, îl puteți redenumi în index.php. Dacă redenumiți fișierul, nu uitați să redenumiți numele fișierului în linie