Hvordan sende en nettside på e-post? Den enkleste formen for å sende data på e-post ved hjelp av HTML og PHP Hvordan sende et bokmerke på e-post
En av de mest populære funksjonene på nettstedet er søknads- eller bestillingsskjemaet, hvorfra dataene sendes via e-post til nettstedets eier. Som regel er slike skjemaer enkle og består av to eller tre felt for dataregistrering. Hvordan lage et slikt bestillingsskjema? Dette krever bruk av språk HTML-oppmerking og programmeringsspråket PHP.
HTML-markeringsspråket i seg selv er enkelt; du trenger bare å finne ut hvordan og hvor du skal plassere visse tagger. Med PHP-programmeringsspråket er ting litt mer komplisert.
For en programmerer er det ikke vanskelig å lage et slikt skjema, men for en HTML-layoutdesigner kan noen handlinger virke vanskelige.
Lag et datainnsendingsskjema i html
Den første linjen vil være som følger
La oss nå sette alt sammen.
La oss nå gjøre feltene i skjemaet obligatoriske. Vi har følgende kode:
Lag en fil som godtar data fra HTML-skjemaet
Dette vil være en fil som heter send.php
I filen, på det første stadiet, må du godta data fra postmatrisen. For å gjøre dette lager vi to variabler:
$fio = $_POST["fio"];
$email = $_POST["email"];
Variablenavn i PHP innledes med et $-tegn, og et semikolon er plassert på slutten av hver linje. $_POST er en matrise som data fra skjemaet sendes inn i. I html-skjemaet er sendemetoden spesifisert som method="post". Dermed er to variabler hentet fra html-skjemaer. For å beskytte nettstedet ditt, må du sende disse variablene gjennom flere filtre - php-funksjoner.
Den første funksjonen vil konvertere alle tegnene som brukeren vil prøve å legge til i skjemaet:
I dette tilfellet opprettes ikke nye variabler i php, men eksisterende brukes. Det filteret vil gjøre er å transformere tegnet "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
Den andre funksjonen dekoder URL-en hvis brukeren prøver å legge den til i skjemaet.
$fio = urldecode($fio);
$email = urldecode($email);
Med den tredje funksjonen vil vi fjerne mellomrom fra begynnelsen og slutten av linjen, hvis noen:
$fio = trim($fio);
$email = trim($email);
Det er andre funksjoner som lar deg filtrere php-variabler. Bruken av dem avhenger av hvor bekymret du er for at en angriper vil prøve å legge til programkode i dette html-skjemaet for e-postinnsending.
Validering av data overført fra HTML-skjema til PHP-fil
For å sjekke om denne koden fungerer og om data overføres, kan du ganske enkelt vise den på skjermen ved hjelp av ekkofunksjonen:
ekko $fio;
ekko "
";
echo $email;
Den andre linjen her er nødvendig for å skille utdataene til php-variabler i forskjellige linjer.
Sende mottatte data fra et HTML-skjema til e-post ved hjelp av PHP
For å sende data på e-post må du bruke e-postfunksjonen i PHP.
mail("til hvilken adresse skal sendes", "emne for brevet", "Melding (brevets brødtekst)","Fra: fra hvilken e-post brevet sendes \r\n");
Du må for eksempel sende data til e-posten til nettstedets eier eller leder [e-postbeskyttet].
Emnet for brevet skal være klart, og budskapet i brevet skal inneholde det brukeren spesifiserte i HTML-skjemaet.
post(" [e-postbeskyttet]", "Søknad fra nettstedet", "Fullt navn:".$fio.". E-post: ".$email ,"Fra: [e-postbeskyttet]\r\n");
Det er nødvendig å legge til en betingelse som vil sjekke om skjemaet ble sendt med PHP til den angitte e-postadressen.
if (mail(" [e-postbeskyttet]", "Bestill fra nettstedet", "Fullt navn:".$fio.". E-post: ".$email ,"Fra: [e-postbeskyttet]\r\n"))
{
echo "melding sendt vellykket";
) annet (
}
Dermed vil programkoden til send.php-filen, som sender HTML-skjemadataene til e-post, se slik ut:
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
//ekko $fio;
//ekko "
";
//echo $email;
if (mail(" [e-postbeskyttet]", "Søknad fra nettstedet", "Fullt navn:".$fio.". E-post: ".$email ,"Fra: [e-postbeskyttet]\r\n"))
( ekko "melding sendt vellykket";
) annet (
echo "feil oppstod under sending av meldingen";
}?>
Tre linjer for å sjekke om dataene blir overført til filen blir kommentert ut. Om nødvendig kan de fjernes, siden de bare var nødvendig for feilsøking.
Vi legger HTML- og PHP-koden for innsending av skjemaet i én fil
I kommentarene til denne artikkelen stiller mange mennesker spørsmålet om hvordan man sørger for at både HTML-skjemaet og PHP-koden for å sende data til e-post er i én fil, og ikke to.
For å implementere dette arbeidet må du plassere HTML-koden til skjemaet i send.php-filen og legge til en betingelse som vil sjekke for tilstedeværelsen av variabler i POST-matrisen (denne matrisen sendes fra skjemaet). Det vil si at hvis variablene i matrisen ikke eksisterer, må du vise brukeren skjemaet. Ellers må du motta data fra arrayet og sende det til mottakeren.
La oss se hvordan du endrer PHP-koden i send.php-filen:
//sjekk om det finnes variabler i POST-matrisen
if(!isset($_POST["fio"]) og !isset($_POST["email"]))(
?> ) annet (
//vis skjemaet
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
if (mail(" [e-postbeskyttet]", "Søknad fra nettstedet", "Fullt navn:".$fio.". E-post: ".$email ,"Fra: [e-postbeskyttet]\r\n"))(
echo "Melding sendt vellykket";
) annet (
echo "Det oppstod feil under sending av meldingen";
}
}
?>
Vi sjekker eksistensen av en variabel i POST-matrisen med isset() PHP-funksjonen. Et utropstegn før denne funksjonen i en tilstand betyr negasjon. Det vil si at hvis variabelen ikke eksisterer, må vi vise formen vår. Hvis jeg ikke hadde satt et utropstegn, ville tilstanden bokstavelig talt bety "hvis den eksisterer, så vis formen." Og dette er feil i vårt tilfelle. Naturligvis kan du gi det nytt navn til index.php. Hvis du gir nytt navn til filen, ikke glem å gi nytt navn til filnavnet på linjen