PHP-registreringsformular ved hjælp af GET, POST-metoder med eksempel
⚡ Smart opsummering
Formularhåndtering i PHP indsamler brugerinput fra HTML-formularer og behandler det på serveren via superglobalerne $_POST og $_GET. Denne gennemgang opbygger en registreringsformular, forklarer POST- og GET-metoderne, sammenligner dem og viser, hvordan man behandler felter, afkrydsningsfelter og søgeinput.

Hvad er Form?
Når du logger ind på en hjemmeside eller din postkasse, interagerer du med en formular.
Formularer bruges til at få input fra brugeren og sende det til webserveren til behandling.
Diagrammet nedenfor illustrerer formularhåndteringsprocessen.
En formular er et HTML-tag, der indeholder grafiske brugergrænsefladeelementer såsom inputfelter, afkrydsningsfelter, radioknapper og mere.
Formen er defineret ved hjælp af … tags og GUI-elementer defineres ved hjælp af formularelementer såsom input.
Hvornår og hvorfor bruger vi formularer?
- Formularer er nyttige ved udviklingping Fleksible og dynamiske applikationer, der accepterer brugerinput.
- Formularer kan bruges til at redigere allerede eksisterende data fra databasen.
Opret en formular
Vi vil bruge HTML-tags til at oprette en formular. Nedenfor er den minimale liste over ting, du skal bruge for at oprette en formular.
- Åbning og lukning af formularmærker …
- Formularindsendelse af typen POST eller GET
- Indsendelse URL som vil behandle de indsendte data
- Inputfelter såsom inputbokse, tekstområder, knapper, afkrydsningsfelter og lignende.
Koden nedenfor opretter en simpel registreringsformular.
<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 af ovenstående kode i en webbrowser viser følgende formular.
HER,
- … er åbnings- og lukkeformmærkerne
- action="registration_form.php" method="POST" angiver destinationen URL og indsendelsestypen.
- For-/Efternavn: er etiketter til indtastningsfelterne
- er inputboks-tags
- er det nye linjemærke
- er en skjult værdi, der bruges til at kontrollere, om formularen er indsendt eller ej
- er den knap, der, når den klikkes på, sender formularen til serveren til behandling
Indsendelse af formulardata til serveren
Formularens handlingsattribut angiver indsendelsen URL der behandler dataene. Method-attributten angiver indsendelsestypen.
PHP POST metode
- Dette er den indbyggede PHP superglobale array-variabel, der bruges til at få værdier sendt via HTTP POST-metoden.
- Array-variablen kan tilgås fra ethvert script i programmet; det har et globalt omfang.
- Denne metode er ideel, når du ikke ønsker at vise formularens indlægsværdier i URL.
- Et godt eksempel på brugen af POST-metoden er, når man sender loginoplysninger til serveren.
Den har følgende syntaks.
<?php
$_POST['variable_name'];
?>
HER,
- "$_POST[...]" er PHP array
- “'variabel_navn'” er navnet på formularfeltet.
PHP GET metode
- Dette er den indbyggede PHP superglobale array-variabel, der bruges til at hente værdier, der sendes via HTTP GET-metoden.
- Array-variablen kan tilgås fra ethvert script i programmet; det har et globalt omfang.
- Denne metode viser formularværdierne i URL.
- Det er ideelt til søgemaskineformularer, da det giver brugerne mulighed for at bogmærke resultaterne.
Den har følgende syntaks.
<?php
$_GET['variable_name'];
?>
HER,
- "$_GET[...]" er PHP-arrayet
- "'variabel_navn'" er URL variabelnavn.
GET vs POST metoder
| POST | GET |
|---|---|
| Værdier, der ikke er synlige i URL | Værdier synlige i URL |
| Har ingen begrænsning på længden af værdierne, da de sendes via HTTP-anmodningens brødtekst. | Har en begrænsning på værdiernes længde, normalt 255 tegn. Dette skyldes, at værdierne vises i URLBemærk, at den øvre grænse for tegn afhænger af browseren. |
| Har lavere ydeevne sammenlignet med GET-metoden på grund af den tid, der bruges på at indkapsle POST-værdierne i HTTP-teksten. | Har højere ydeevne sammenlignet med POST-metoden på grund af den simple natur af at tilføje værdierne i URL. |
| Understøtter mange forskellige datatyper såsom strenge, numeriske, binære og mere. | Understøtter kun strengdatatyper, fordi værdierne vises i URL |
| Resultater kan ikke bogmærkes | Resultater kan bogmærkes på grund af synligheden af værdierne i URL |
Diagrammet nedenfor viser forskellen mellem GET og POST.
Behandling af registreringsformularens data
Registreringsformularen sender data til sig selv som angivet i formularens handlingsattribut.
Når en formular er blevet indsendt, udfyldes værdierne i det superglobale array $_POST.
Vi vil bruge PHP isset-funktionen til at kontrollere, om formularværdierne er blevet udfyldt i $_POST-arrayet og behandle dataene.
Vi vil ændre registreringsformularen, så den inkluderer den PHP-kode, der behandler dataene. Nedenfor er den ændrede kode.
<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="/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,
- kontrollerer om det skjulte felt form_submitted er udfyldt i $_POST[]-arrayet og viser en takkebesked og et fornavn. Hvis feltet form_submitted ikke er udfyldt i $_POST[]-arrayet, vises formularen.
Flere eksempler
Simpel søgemaskine
Vi vil designe en simpel søgemaskine, der bruger PHP GET-metoden som formularindsendelsestype.
For nemheds skyld vil vi bruge en PHP if-sætning at bestemme outputtet.
Vi vil bruge den samme HTML-kode til registreringsformularen ovenfor og foretage minimale ændringer af den.
<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="/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 ovenstående side i en webbrowser.
Følgende formular vil blive vist.
Skriv GET med store bogstaver, og klik derefter på send-knappen.
Følgende vil blive vist.
Diagrammet nedenfor viser URL for ovenstående resultater.
Bemærk URL har vist værdien af search_term og form_submitted. Prøv at indtaste noget andet end GET, klik derefter på send-knappen og se, hvilke resultater du får.
Arbejde med afkrydsningsfelter, alternativknapper
Hvis brugeren ikke markerer et afkrydsningsfelt eller en alternativknap, sendes der ingen værdi. Hvis brugeren markerer et afkrydsningsfelt eller en alternativknap, sendes værdien én (1) eller sand.
Vi vil ændre registreringsformularens kode og inkludere en afkrydsningsknap, der giver brugeren mulighed for at acceptere servicevilkårene.
<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="/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 ovenstående formular i en browser.
Udfyld for- og efternavn.
Bemærk, at afkrydsningsfeltet Accepter servicevilkår ikke er markeret.
Klik på knappen Submit.
Du får følgende resultater.
Klik på bagsiden af formularlinket, og markér derefter afkrydsningsfeltet.
Klik på knappen Submit.
Du får følgende resultater.










