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 er nyttige nรฅr man utviklerping fleksible og dynamiske applikasjoner som aksepterer brukerinndata.
- 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
- Innlevering URL som skal 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"> angir destinasjonen URL 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
Handlingsattributtet til skjemaet spesifiserer innsendingen URL som behandler dataene. Metodeattributtet angir 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 skjemainnleggsverdiene i URL.
- 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
- ยซ'variabelnavn'ยป er URL variabelnavn.
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 formverdiene i URL.
- 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
- ยซ'variabelnavn'ยป er URL variabelnavn.
GET vs POST-metoder
| POST | GET |
|---|---|
| Verdier som ikke er synlige i URL | Verdier som er synlige i URL |
| Har ingen begrensning pรฅ lengden pรฅ verdiene siden de sendes inn via HTTP-teksten | Har en begrensning pรฅ lengden pรฅ verdiene, vanligvis 255 tegn. Dette er fordi verdiene vises i URLMerk at den รธvre grensen for tegn avhenger 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 mรฅten รฅ legge til verdiene i URL. |
| Stรธtter mange forskjellige datatyper som streng, numerisk, binรฆr etc. | Stรธtter bare strengdatatyper fordi verdiene vises i URL |
| Resultater kan ikke bokmerkes | Resultatene kan bokmerkes pรฅ grunn av synligheten av verdiene i URL |
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 for resultatene ovenfor
Legg merke til URL har vist verdien av search_term 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.










