Een van de meest populaire functies op de site is het aanvraag- of bestelformulier, waarvan de gegevens per e-mail naar de site-eigenaar worden verzonden. Dergelijke formulieren zijn in de regel eenvoudig en bestaan uit twee of drie velden voor gegevensinvoer. Hoe maak je zo’n bestelformulier aan? Hiervoor is het gebruik van HTML-opmaaktaal en PHP-programmeertaal vereist.
De HTML-opmaaktaal zelf is eenvoudig; u hoeft alleen maar uit te zoeken hoe en waar u bepaalde tags moet plaatsen. Met de programmeertaal PHP zijn de zaken iets ingewikkelder.
Voor een programmeur is het maken van zo'n formulier niet moeilijk, maar voor een HTML-lay-outontwerper lijken sommige acties misschien moeilijk.
Maak een formulier voor het indienen van gegevens in html
De eerste regel zal als volgt zijn
Laten we nu alles samenvoegen.
Laten we nu de velden in het formulier verplicht maken. We hebben de volgende code:
Maak een bestand dat gegevens uit het HTML-formulier accepteert
Dit zal een bestand zijn met de naam send.php
In het bestand moet u in de eerste fase gegevens uit de post-array accepteren. Om dit te doen, maken we twee variabelen:
$fio = $_POST["fio"];
$e-mail = $_POST["e-mail"];
Variabelenamen in PHP worden voorafgegaan door een $-teken en aan het einde van elke regel wordt een puntkomma geplaatst. $_POST is een array waarnaar gegevens uit het formulier worden verzonden. In het HTML-formulier wordt de verzendmethode gespecificeerd als method="post". Er worden dus twee variabelen uit het HTML-formulier geaccepteerd. Om uw site te beschermen, moet u deze variabelen door verschillende filters sturen: php-functies.
De eerste functie converteert alle tekens die de gebruiker aan het formulier probeert toe te voegen:
In dit geval worden er geen nieuwe variabelen aangemaakt in php, maar worden bestaande variabelen gebruikt. Wat het filter zal doen is het personage transformeren "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
De tweede functie decodeert de URL als de gebruiker deze aan het formulier probeert toe te voegen.
$fio = urldecode($fio);
$email = urldecode($email);
Met de derde functie verwijderen we eventuele spaties aan het begin en einde van de regel:
$fio = trim($fio);
$email = trim($email);
Er zijn andere functies waarmee u php-variabelen kunt filteren. Het gebruik ervan hangt af van hoe bezorgd u bent dat een aanvaller programmacode zal proberen toe te voegen aan dit HTML-e-mailinzendingsformulier.
Validatie van gegevens overgedragen van HTML-formulier naar PHP-bestand
Om te controleren of deze code werkt en of er gegevens worden overgedragen, kunt u deze eenvoudig op het scherm weergeven met behulp van de echofunctie:
echo $fio;
echo "
";
echo $fio;
De tweede regel hier is nodig om de uitvoer van php-variabelen in verschillende regels te verdelen.
Ontvangen gegevens van een HTML-formulier naar e-mail verzenden met behulp van PHP
Om gegevens per e-mail te verzenden, moet u de mailfunctie in PHP gebruiken.
mail("naar welk adres te sturen", "onderwerp van de brief", "Bericht (hoofdtekst van de brief)", "Vanaf: vanuit welke e-mail de brief wordt verzonden \r\n");
U moet bijvoorbeeld gegevens naar het e-mailadres van de site-eigenaar of -beheerder sturen [e-mailadres beveiligd].
Het onderwerp van de brief moet duidelijk zijn en de boodschap van de brief moet bevatten wat de gebruiker heeft opgegeven in het HTML-formulier.
mail(" [e-mailadres beveiligd]", "Toepassing van de site", "Volledige naam:".$fio.". E-mail: ".$email ,"Van: [e-mailadres beveiligd]\r\n");
Het is noodzakelijk om een voorwaarde toe te voegen die controleert of het formulier via PHP naar het opgegeven e-mailadres is verzonden.
als (mail(" [e-mailadres beveiligd]", "Bestel via de site", "Volledige naam:".$fio.". E-mail: ".$email ,"Van: [e-mailadres beveiligd]\r\n"))
{
echo "bericht succesvol verzonden";
) anders (
}
De programmacode van het send.php-bestand, dat de HTML-formuliergegevens naar e-mail verzendt, zal er dus als volgt uitzien:
$fio = $_POST["fio"];
$e-mail = $_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 $ e-mail;
als (mail(" [e-mailadres beveiligd]", "Toepassing van de site", "Volledige naam:".$fio.". E-mail: ".$email ,"Van: [e-mailadres beveiligd]\r\n"))
( echo "bericht succesvol verzonden";
) anders (
echo "Er zijn fouten opgetreden tijdens het verzenden van het bericht";
}?>
Drie regels om te controleren of de gegevens naar het bestand worden overgebracht, zijn voorzien van commentaar. Indien nodig kunnen ze worden verwijderd, omdat ze alleen nodig waren voor foutopsporing.
De HTML- en PHP-code voor het versturen van het formulier plaatsen wij in één bestand
In de commentaren op dit artikel stellen veel mensen de vraag hoe ze ervoor kunnen zorgen dat zowel het HTML-formulier als de PHP-code voor het verzenden van gegevens naar e-mail in één bestand staan, en niet in twee.
Om dit werk te implementeren, moet u de HTML-code van het formulier in het bestand send.php plaatsen en een voorwaarde toevoegen die controleert op de aanwezigheid van variabelen in de POST-array (deze array wordt verzonden vanuit het formulier). Dat wil zeggen, als de variabelen in de array niet bestaan, moet u de gebruiker het formulier laten zien. Anders moet u gegevens uit de array ontvangen en naar de ontvanger sturen.
Laten we eens kijken hoe we de PHP-code in het send.php-bestand kunnen wijzigen:
//controleer of er variabelen bestaan in de POST-array
if(!isset($_POST["fio"]) en !isset($_POST["e-mail"]))(
?> ) anders (
//toon het formulier
$fio = $_POST["fio"];
$e-mail = $_POST["e-mail"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
als (mail(" [e-mailadres beveiligd]", "Toepassing van de site", "Volledige naam:".$fio.". E-mail: ".$email ,"Van: [e-mailadres beveiligd]\r\n"))(
echo "Bericht succesvol verzonden";
) anders (
echo "Er zijn fouten opgetreden tijdens het verzenden van het bericht";
}
}
?>
We controleren het bestaan van een variabele in de POST-array met de isset() PHP-functie. Een uitroepteken vóór deze functie in een voorwaarde betekent ontkenning. Dat wil zeggen, als de variabele niet bestaat, moeten we onze vorm tonen. Als ik het uitroepteken niet had geplaatst, zou de voorwaarde letterlijk betekenen ‘als het bestaat, toon dan de vorm’. En dat is in ons geval verkeerd. Uiteraard kunt u de naam ervan wijzigen in index.php. Als u de naam van het bestand wijzigt, vergeet dan niet de bestandsnaam in de regel te hernoemen