PHP-registreringsskjema ved hjelp av GET, POST-metoder med eksempel
Hva er Form?
Når du logger inn på et nettsted eller i postboksen din, samhandler du med et skjema.
Skjemaer brukes til å få innspill fra brukeren og sende det til webserveren for behandling.
Diagrammet nedenfor illustrerer skjemahåndteringsprosessen.
Et skjema er en HTML-tag som inneholder grafiske brukergrensesnittelementer som inndataboks, avmerkingsbokser radioknapper osv.
Skjemaet defineres ved hjelp av … koder og GUI-elementer er definert ved hjelp av skjemaelementer som input.
Når og hvorfor bruker vi skjemaer?
- Skjemaer kommer godt med når du utvikler fleksible og dynamiske applikasjoner som aksepterer brukerinnspill.
- Skjemaer kan brukes til å redigere allerede eksisterende data fra databasen
Lag et skjema
Vi vil bruke HTML-koder for å lage et skjema. Nedenfor er den minimale listen over ting du trenger for å lage et skjema.
- Åpning og lukking av skjemaetiketter …
- Skjemainnsending av typen POST eller GET
- Innsendings-URL som vil behandle de innsendte dataene
- Inndatafelt som inndatabokser, tekstområder, knapper, avmerkingsbokser osv.
Koden nedenfor lager et enkelt registreringsskjema
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h2>Registration Form</h2> <form action="registration_form.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> </body> </html>
Visning av koden ovenfor i en nettleser viser følgende skjema.
HER,
- … er åpnings- og lukkingsetikettene
- action=”registration_form.php” method=”POST”> spesifiserer destinasjonsadressen og innsendingstypen.
- For-/etternavn: er etiketter for inndataboksene
- er inndataboks-tagger
- er den nye linjekoden
- er en skjult verdi som brukes til å sjekke om skjemaet er sendt inn eller ikke
- er knappen som når den klikkes sender skjemaet til serveren for behandling
Sende skjemadataene til serveren
Action-attributtet til skjemaet spesifiserer innsendings-URLen som behandler dataene. Metodeattributtet spesifiserer innsendingstypen.
PHP POST-metoden
- Dette er den innebygde PHP super global array-variabelen som brukes til å få verdier sendt via HTTP POST-metoden.
- Matrisevariabelen kan nås fra et hvilket som helst skript i programmet; den har et globalt omfang.
- Denne metoden er ideell når du ikke vil vise skjemapostverdiene i URL-en.
- Et godt eksempel på bruk av postmetode er når du sender inn påloggingsdetaljer til serveren.
Den har følgende syntaks.
<?php $_POST['variable_name']; ?>
HER,
- "$_POST[...]" er PHP-array
- "'variable_name'" er URL-variabelnavnet.
PHP GET-metoden
- Dette er den innebygde PHP super globale array-variabelen som brukes til å få verdier sendt via HTTP GET-metoden.
- Matrisevariabelen kan nås fra et hvilket som helst skript i programmet; den har et globalt omfang.
- Denne metoden viser skjemaverdiene i URL-en.
- Den er ideell for søkemotorskjemaer da den lar brukerne bokmerke resultatene.
Den har følgende syntaks.
<?php $_GET['variable_name']; ?>
HER,
- "$_GET[...]" er PHP-arrayen
- "'variable_name'" er URL-variabelnavnet.
GET vs POST-metoder
POST | GET |
---|---|
Verdier er ikke synlige i URL-en | Verdier som er synlige i URL-en |
Har ingen begrensning på lengden på verdiene siden de sendes inn via HTTP-teksten | Har begrensning på lengden på verdiene vanligvis 255 tegn. Dette er fordi verdiene vises i URL-en. Merk at den øvre grensen for tegn er avhengig av nettleseren. |
Har lavere ytelse sammenlignet med Php_GET-metoden på grunn av tid brukt på å innkapsle Php_POST-verdiene i HTTP-kroppen | Har høy ytelse sammenlignet med POST-metoden på grunn av den enkle natur å legge til verdiene i URL-en. |
Støtter mange forskjellige datatyper som streng, numerisk, binær etc. | Støtter bare strengdatatyper fordi verdiene vises i URL-en |
Resultater kan ikke bokmerkes | Resultatene kan bokmerkes på grunn av synligheten til verdiene i URL-en |
Diagrammet nedenfor viser forskjellen mellom get og post
Behandling av registreringsskjemadata
Registreringsskjemaet sender inn data til seg selv som spesifisert i handlingsattributtet til skjemaet.
Når et skjema er sendt inn, fylles verdiene i $_POST superglobal matrise.
Vi vil bruke PHP isset-funksjonen for å sjekke om skjemaverdiene er fylt ut i $_POST-matrisen og behandle dataene.
Vi vil endre registreringsskjemaet til å inkludere PHP-koden som behandler dataene. Nedenfor er den endrede koden
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_POST['form_submitted'])): ?> //this code is executed when the form is submitted <h2>Thank You <?php echo $_POST['firstname']; ?> </h2> <p>You have been registered as <?php echo $_POST['firstname'] . ' ' . $_POST['lastname']; ?> </p> <p>Go <a href="/no/registration_form.php">back</a> to the form</p> <?php else: ?> <h2>Registration Form</h2> <form action="registration_form.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ? > </body> </html>
HER,
-
sjekker om det skjulte form_submitted-feltet er fylt ut i $_POST[]-matrisen og viser en takk- og fornavnsmelding.
Hvis form_fobmitted-feltet ikke er fylt ut i $_POST[]-matrisen, vises skjemaet.
Flere eksempler
Enkel søkemotor
Vi vil designe en enkel søkemotor som bruker PHP_GET-metoden som skjemainnsendingstype.
For enkelhets skyld vil vi bruke en PHP If-setning for å bestemme utgangen.
Vi vil bruke den samme HTML-koden for registreringsskjemaet ovenfor og gjøre minimale endringer i det.
<html> <head> <title>Simple Search Engine</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_GET['form_submitted'])): ?> <h2>Search Results For <?php echo $_GET['search_term']; ?> </h2> <?php if ($_GET['search_term'] == "GET"): ?> <p>The GET method displays its values in the URL</p> <?php else: ?> <p>Sorry, no matches found for your search term</p> <?php endif; ?> <p>Go <a href="/no/search_engine.php">back</a> to the form</p> <?php else: ?> <h2>Simple Search Engine - Type in GET </h2> <form action="search_engine.php" method="GET"> Search Term: <input type="text" name="search_term"> <br> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
Se siden ovenfor i en nettleser
Følgende skjema vises
Skriv inn GET med store bokstaver og klikk deretter på send-knappen.
Følgende vil bli vist
Diagrammet nedenfor viser URL-en for resultatene ovenfor
Merk at nettadressen har vist verdien av søketerm og form_submitted. Prøv å skrive inn noe annet enn GET, klikk deretter på send-knappen og se hvilke resultater du vil få.
Arbeide med avmerkingsbokser, alternativknapper
Hvis brukeren ikke velger en avkrysningsboks eller alternativknapp, sendes ingen verdi, hvis brukeren velger en avkrysningsboks eller alternativknapp, sendes verdien en (1) eller sann.
Vi vil endre registreringsskjemakoden og inkludere en hakeknapp som lar brukeren godta vilkårene for tjenesten.
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_POST['form_submitted'])): ?> <?php if (!isset($_POST['agree'])): ?> <p>You have not accepted our terms of service</p> <?php else: ?> <h2>Thank You <?php echo $_POST['firstname']; ?></h2> <p>You have been registered as <?php echo $_POST['firstname'] . ' ' . $_POST['lastname']; ?> </p> <p> Go <a href="/no/registration_form2.php">back</a> to the form</p> <?php endif; ?> <?php else: ?> <h2>Registration Form</h2> <form action="registration_form2.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <br> Agree to Terms of Service: <input type="checkbox" name="agree"> <br> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
Se skjemaet ovenfor i en nettleser
Fyll inn for- og etternavn
Merk at avmerkingsboksen Godta vilkårene for bruk ikke er valgt.
Klikk på send-knappen
Du vil få følgende resultater
Klikk på tilbake til skjemakoblingen og velg deretter avmerkingsboksen
Klikk på send-knappen
Du vil få følgende resultater
Sammendrag
- Skjemaer brukes for å hente data fra brukerne
- Skjemaer lages ved hjelp av HTML-koder
- Skjemaer kan sendes til serveren for behandling ved hjelp av enten POST- eller GET-metoden
- Skjemaverdier som sendes inn via POST-metoden, er innkapslet i HTTP-kroppen.
- Skjemaverdier som sendes inn via GET-metoden, legges til og vises i URL-en.