Thuis-Ramen-HTML-formulieren in php. Een feedbackformulier maken in PHP
HTML-formulieren in php. Een feedbackformulier maken in PHP
Eén van de meest voorkomende taken in de praktijk is het implementeren van een feedbackformulier. Je bedoelt het schrijven van de HTML-code, het ontwerpen ervan in CSS, het creëren van een PHP-script dat de van de gebruiker ontvangen gegevens verwerkt en naar onze mail stuurt, het schrijven van een JS-script dat het formulier controleert op de geschiktheid van de ingevoerde gegevens, het beschermen ons geesteskind tegen spam, zodat onze mailbox niet instort door botaanvallen.
Alle bovenstaande punten zullen in onze review worden besproken en in detail worden becommentarieerd.
Laten we dus beginnen met het maken van een feedbackformulier:
HTML
Allereerst schrijven we HTML-code, waarin de velden worden gespecificeerd die de gebruiker zal invullen. Ze zullen in de toekomst worden geformaliseerd. De formuliercode ziet er als volgt uit:
Ik ben het ermee eens, tot nu toe is alles lelijk en niets duidelijk, maar we zijn nog maar net begonnen.
Laten we de bovenstaande code in detail bekijken:
<
form method=
"post"
action=
"mail.php"
>
…
form>
Om een formulier te maken, moet u de formuliertag gebruiken. Hij is het die het begin en einde van het formulier voor de codetolk bepaalt. Het heeft, zoals elke tag, een hele reeks attributen, maar er zijn er maar twee nodig om het formulier te laten werken, dit zijn methode (de methode om een verzoek naar de server te sturen, post wordt standaard gebruikt voor formulieren) en actie ( geeft het pad naar het formulierhandlerbestand aan, namelijk in Dit bestand zal een PHP-script bevatten, dat vervolgens de door de gebruiker ingevoerde waarden per e-mail naar ons stuurt. In ons geval zien we dat dit bestand mail.php heet deze bevindt zich in dezelfde sitemap als de pagina die we overwegen).
Vervolgens hebben we input. Dit zijn eigenlijk de formuliervelden zelf waarin gebruikers de informatie zullen invoeren die we nodig hebben (type = "text" geeft aan dat dit tekst zal zijn). Het attribuut maxlength specificeert hoeveel tekens de gebruiker in een bepaald formulierveld kan invoeren. Het belangrijkste attribuut is naam: het specificeert de naam van een specifiek veld. Het is onder deze namen dat het PHP-script vervolgens de ingevoerde informatie verwerkt. Indien gewenst kunt u ook het placeholder-attribuut instellen, dat tekst in het veld weergeeft die verdwijnt wanneer de cursor erin wordt geplaatst. Een van de problemen met tijdelijke aanduiding is dat deze niet door sommige oudere browsers wordt ondersteund.
<
label for
=
"name"
>Naam:
label>
Wordt gebruikt als we tijdelijke aanduidingen hebben opgegeven. Een gewone veldhandtekening, het for-attribuut vertelt naar welk specifiek veld deze handtekening verwijst. De waarde geeft de naam aan van het veld waarin we geïnteresseerd zijn.
Het is net als invoer bedoeld dat de gebruiker informatie invoert, alleen is het veld dit keer afgestemd op lange berichten. Rijen specificeert de veldgrootte in rijen, kolommen in tekens. Over het algemeen bepalen ze de hoogte en breedte van ons veld.
<
input type=
"submit"
value=
"Versturen"
/>
Type="submit" vertelt ons dat dit een knop is voor het indienen van een formulier, en value specificeert de tekst die in deze knop zal staan.
<
div class
=
"right"
>
div>
worden alleen gebruikt voor het verdere visuele ontwerp van het formulier.
CSS
Om ervoor te zorgen dat ons feedbackformulier er representatief uitziet, moet het worden opgemaakt. Om het volgende resultaat te krijgen:
Ik zie het nut niet in van het gedetailleerd beschrijven van CSS; ik vestig alleen uw aandacht op de belangrijkste punten:
Het is niet nodig om voor elke tag in het formulier een ontwerp te schrijven. Probeer uw selectors zo te bouwen dat u alle benodigde elementen in een paar regels code kunt ontwerpen.
Gebruik geen onnodige typetags om lijnen af te breken en inkepingen te maken <
br>,
<
p>
enz. CSS met de weergave: blok en marge met opvuleigenschappen kunnen deze taken goed aan. Meer over waarom u het niet zou moeten gebruiken <
br>
in lay-out in het algemeen kun je lezen in het artikel Tag br, maar is het echt nodig? .
Gebruik geen tabellarische indeling voor formulieren. Dit is in tegenspraak met de semantiek van deze tag, en zoekmachines zijn dol op semantische code. Om de visuele structuur van het document te vormen, hebben we alleen div-tags nodig, en de weergave-eigenschappen gespecificeerd in CSS: inline-block (rangschikt blokken op een rij) en verticaal uitlijnen: top (voorkomt dat ze over het scherm verspreid worden) , zet ze op de gewenste hoogte en voila, niets overbodigs en alles bevindt zich zoals we nodig hebben.
Voor degenen die tijd willen besparen op het ontwerpen van websites, kan ik het gebruik van CSS-frameworks aanbevelen bij het maken van websites, vooral zelfgeschreven websites. Mijn keuze in dit opzicht is Twitter Bootstrap. U kunt een les bekijken over hoe u hiermee formulieren kunt ontwerpen.
PHP
Welnu, het is tijd om ons formulier te laten werken.
We gaan naar onze hoofdmap van de site en maken daar het mail.php-bestand, waarnaar we eerder het pad hebben opgegeven in het action-attribuut van de formuliertag.
Uiteindelijk zal zijn code er als volgt uitzien:
Uw bericht is succesvol verzonden\" javascript: history.back()\" >Ga terug"
; if (! leeg ($_POST [ "naam" ] ) en ! leeg ($_POST [ "telefoon" ] ) en ! leeg ($_POST [ "mail" ] ) en ! leeg ($_POST [ "bericht" ] ) ) ($name = trim (strip_tags ($_POST ["naam"] ) ); $phone = trim (strip_tags ($_POST ["telefoon"] ) ); $mail = trim (strip_tags ($_POST ["mail"] ) ); $message = trim (strip_tags ($_POST ["bericht"] );mail (,, "Ik schreef je: ". $name." Zijn nummer: " . $phone ." " Zijn e-mail: " . $mail . Zijn boodschap: " . $bericht, ); echo "Uw bericht is succesvol verzonden! U ontvangt binnenkort een antwoord
U kunt de bespreking van de HTML- en CSS-gedeelten van dit document overslaan. In de kern is dit een reguliere websitepagina die u kunt ontwerpen volgens uw wensen en behoeften. Laten we eens kijken naar het belangrijkste onderdeel: het PHP-script voor het verwerken van het formulier: $terug = " Met deze regel creëren we een link om terug te keren naar de vorige pagina. Omdat we op voorhand niet weten vanaf welke pagina de gebruiker op deze pagina komt, gebeurt dit met behulp van een kleine JS-functie. In de toekomst zullen we eenvoudigweg toegang krijgen tot deze variabele om deze weer te geven op de plaatsen die we nodig hebben. if (! leeg ($_POST [ "naam" ] ) en ! leeg ($_POST [ "telefoon" ] ) en ! leeg ($_POST [ "mail" ] ) en ! leeg ($_POST [ "bericht" ] ) ) (//intern deel van de handler
) anders (echo
Als alle velden zijn ingevuld, begint het script de gegevens in het interne gedeelte te verwerken, maar als ten minste één veld niet is ingevuld, wordt er een bericht weergegeven op het scherm van de gebruiker waarin wordt gevraagd alle velden in te vullen. velden van het formulier echo “Om een bericht te verzenden, vult u alle velden in $back” en een link om terug te keren naar de vorige pagina die we met de allereerste regel hebben gemaakt.
Vervolgens plakken we in het interne deel van de formulierhandler:
$name = trim (strip_tags ($_POST ["naam"] ) );
$phone = trim(strip_tags($_POST["telefoon"]));
$mail = trim(strip_tags($_POST["mail"]));
$bericht = trim(strip_tags($_POST["bericht"]));
Daarom hebben we de door de gebruiker ingevoerde gegevens uit html-tags en extra spaties verwijderd. Hierdoor kunnen we onszelf beschermen tegen het ontvangen van kwaadaardige code in berichten die naar ons worden verzonden.
De controles kunnen ingewikkelder worden gemaakt, maar dit is naar eigen goeddunken. We hebben al minimale bescherming aan de serverzijde geïnstalleerd. De rest doen we aan de clientzijde met behulp van JS. Ik raad niet aan om de formulierbeveiliging aan de serverkant volledig op te geven ten gunste van JS, aangezien er, hoewel uiterst zeldzaam, unieke zijn waarbij JS is uitgeschakeld in de browser.,
Voeg na het opschonen van de tags het verzenden van een bericht toe: mail ( if (! leeg ($_POST [ "naam" ] ) en ! leeg ($_POST [ "telefoon" ] ) en ! leeg ($_POST [ "mail" ] ) en ! leeg ($_POST [ "bericht" ] ) ) ($name = trim (strip_tags ($_POST ["naam"] ) ); $phone = trim (strip_tags ($_POST ["telefoon"] ) ); $mail = trim (strip_tags ($_POST ["mail"] ) ); $message = trim (strip_tags ($_POST ["bericht"] );mail (,, "Ik schreef je: ". $name." Zijn nummer: " . $phone ." " "[email protected]"'Brief van uw_site_adres' , "Schreef je: " . $naam . ")
;
Zijn boodschap: "
. $ bericht
"Inhoudstype:text/html;charset=windows-1251"
Het is deze lijn die verantwoordelijk is voor het genereren en verzenden van het bericht naar ons. Het wordt als volgt ingevuld: <
br />
“[email protected]” – hier plaatst u uw e-mailadres tussen de aanhalingstekens <
br />
“Brief van uw_site_adres” is het onderwerp van het bericht dat naar uw e-mail wordt verzonden. Je kunt hier alles schrijven. <
br />
"Schreef je: ".$naam." <
br />
Zijn nummer: ".$phone."
Zijn e-mail: ".$mail."
Zijn bericht: ".$message – we vormen de berichttekst zelf. $name – we voegen de informatie in die de gebruiker heeft ingevuld door de velden uit de vorige stap te openen, tussen aanhalingstekens beschrijven we wat dit veld betekent, met de tag
We breken de lijn zodat het bericht als geheel leesbaar is. <
meta http-
equiv=
"Content-Type"
content=
Content-type:text/html;charset=windows-1251 - aan het einde is er een expliciete indicatie van het gegevenstype dat in het bericht wordt verzonden en de codering ervan. />
BELANGRIJK!
Veel mensen geven niet expliciet de codering aan van het bericht dat wordt verzonden, maar bij sommige e-mailclients kan dit in de toekomst problemen veroorzaken (onleesbare e-mails worden naar de mail verzonden), dus ik raad aan om dit toch te specificeren.
Het controleren van het formulier op de juistheid van de ingevulde gegevens
Om ervoor te zorgen dat gebruikers niet per ongeluk velden missen en alles correct invullen, is het de moeite waard om de ingevoerde gegevens te controleren.
Dit kan zowel in PHP aan de serverzijde als in JS aan de clientzijde. Ik gebruik de tweede optie, omdat iemand op deze manier onmiddellijk kan achterhalen wat hij verkeerd heeft gedaan en de fout kan corrigeren zonder extra pagina-overgangen te maken.
We plakken de scriptcode in hetzelfde bestand waar we het HTML-gedeelte van het formulier hebben. Voor ons geval zal het er als volgt uitzien:
<
script>function checkForm(form) ( var naam = formulier. naam. waarde; var n = naam. match(/ ^[ A- Za- zA- Jaa- z ] * [ A- Za- zA- Ja- z ] + $/ ); als (!n) (waarschuwing( "De ingevoerde naam is onjuist, corrigeer de fout"); retour vals;) var telefoon = formulier. telefoon. waarde; var p = telefoon. overeenkomen(/ ^[ 0 - 9 + ] [ 0 - 9 - ] * [ 0 - 9 - ] + $/ ); als (! p) ( alert("Telefoonnummer verkeerd ingevoerd"
<
form method=
"post"
action=
"mail.php"
onSubmit=
"return checkForm(this)"
>
"Het ingevoerde e-mailadres is onjuist, corrigeer de fout"
);
retour vals; ) retourneert waar;
Daarvoor, zodat wij dit controleren wanneer u op de knop voor het verzenden van het formulier klikt We voegen de lancering van ons script toe aan de formuliertag:
HTML-formulieren zijn complexe interface-elementen. Ze omvatten verschillende functionele elementen: invoervelden
AchternaamAchternaamAchternaam
Formuliervelden kunnen met behulp van het element in logische blokken worden verdeeld