PHP-registreringsformulär med GET, POST-metoder med exempel
⚡ Smart sammanfattning
Forms Handling i PHP samlar in användarinmatning från HTML-formulär och bearbetar den på servern via superglobalerna $_POST och $_GET. Den här genomgången bygger ett registreringsformulär, förklarar POST- och GET-metoderna, jämför dem och visar hur man bearbetar fält, kryssrutor och sökinmatning.

Vad är Form?
När du loggar in på en webbplats eller i din inkorg interagerar du med ett formulär.
Formulär används för att få input från användaren och skicka in den till webbservern för bearbetning.
Diagrammet nedan illustrerar formulärhanteringsprocessen.
Ett formulär är en HTML-tagg som innehåller grafiska gränssnittselement som inmatningsrutor, kryssrutor, radioknappar och mer.
Formuläret definieras med hjälp av … taggar och GUI-objekt definieras med hjälp av formulärelement som input.
När och varför använder vi formulär?
- Formulär är praktiska vid utvecklingping flexibla och dynamiska applikationer som accepterar användarinmatning.
- Formulär kan användas för att redigera redan befintlig data från databasen.
Skapa ett formulär
Vi kommer att använda HTML-taggar för att skapa ett formulär. Nedan är den minimala listan över saker du behöver för att skapa ett formulär.
- Öppna och stänga formulärtaggar …
- Formulärsinlämning typ POST eller GET
- Inlämning URL som kommer att behandla de inlämnade uppgifterna
- Inmatningsfält som inmatningsrutor, textområden, knappar, kryssrutor och liknande.
Koden nedan skapar ett enkelt registreringsformulär.
<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>
Om du visar ovanstående kod i en webbläsare visas följande formulär.
HÄR,
- … är öppnings- och stängningsetiketterna
- action="registration_form.php" method="POST" anger destinationen URL och inlämningstypen.
- För-/efternamn: är etiketter för inmatningsrutorna
- är inmatningsboxtaggar
- är den nya radtaggen
- är ett dolt värde som används för att kontrollera om formuläret har skickats in eller inte
- är knappen som, när den klickas, skickar formuläret till servern för bearbetning
Skickar formulärdata till servern
Formulärets action-attribut anger inlämningen URL som bearbetar informationen. Metodattributet anger inlämningstypen.
PHP POST-metoden
- Detta är den inbyggda PHP superglobala arrayvariabeln som används för att hämta värden som skickas via HTTP POST-metoden.
- Arrayvariabeln kan nås från vilket skript som helst i programmet; den har en global räckvidd.
- Den här metoden är idealisk när du inte vill visa formulärets inläggsvärden i URL.
- Ett bra exempel på hur man använder POST-metoden är när man skickar inloggningsuppgifter till servern.
Den har följande syntax.
<?php
$_POST['variable_name'];
?>
HÄR,
- "$_POST[...]" är PHP-array
- ”'variabelnamn'” är formulärfältets namn.
PHP GET-metoden
- Detta är den inbyggda PHP superglobala arrayvariabeln som används för att hämta värden som skickas via HTTP GET-metoden.
- Arrayvariabeln kan nås från vilket skript som helst i programmet; den har en global räckvidd.
- Den här metoden visar formulärvärdena i URL.
- Det är idealiskt för sökmotorformulär eftersom det låter användare bokmärka resultaten.
Den har följande syntax.
<?php
$_GET['variable_name'];
?>
HÄR,
- "$_GET[...]" är PHP-arrayen
- "'variabelnamn'" är URL variabelnamn.
GET vs POST-metoder
| POST | FÅ |
|---|---|
| Värden som inte syns i URL | Värden synliga i URL |
| Har ingen begränsning på längden på värdena eftersom de skickas via HTTP-begärans brödtext | Har en begränsning på värdenas längd, vanligtvis 255 tecken. Detta beror på att värdena visas i URLObservera att den övre gränsen för tecken beror på webbläsaren. |
| Har lägre prestanda jämfört med GET-metoden på grund av den tid som går åt till att inkapsla POST-värdena i HTTP-texten. | Har högre prestanda jämfört med POST-metoden på grund av den enkla naturen att lägga till värdena i URL. |
| Stöder många olika datatyper som strängar, numeriska, binära och mer. | Stöder endast strängdatatyper eftersom värdena visas i URL |
| Resultaten kan inte bokmärkas | Resultaten kan bokmärkas tack vare värdenas synlighet i URL |
Diagrammet nedan visar skillnaden mellan GET och POST.
Behandling av registreringsformulärets uppgifter
Registreringsformuläret skickar data till sig själv som specificerats i formulärets handlingsattribut.
När ett formulär har skickats in fylls värdena i i den superglobala arrayen $_POST.
Vi kommer att använda PHP isset-funktionen för att kontrollera om formulärvärdena har fyllts i $_POST-matrisen och bearbetar data.
Vi kommer att modifiera registreringsformuläret så att det inkluderar PHP-koden som bearbetar informationen. Nedan följer den modifierade 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="/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>
HÄR,
- kontrollerar om det dolda fältet form_submitted har fyllts i arrayen $_POST[] och visar ett tack- och förnamnsmeddelande. Om fältet form_submitted inte har fyllts i arrayen $_POST[] visas formuläret.
Fler exempel
Enkel sökmotor
Vi kommer att designa en enkel sökmotor som använder PHP GET-metoden som formulärinlämningstyp.
För enkelhetens skull kommer vi att använda en PHP if-sats för att bestämma uteffekten.
Vi kommer att använda samma HTML-kod för registreringsformuläret ovan och göra minimala ändringar 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="/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>
Visa sidan ovan i en webbläsare.
Följande formulär kommer att visas.
Skriv GET med versaler och klicka sedan på skicka-knappen.
Följande kommer att visas.
Diagrammet nedan visar URL för ovanstående resultat.
Notera URL har visat värdet för search_term och form_submitted. Försök att ange något annat än GET, klicka sedan på skicka-knappen och se vilka resultat du får.
Arbeta med kryssrutor, alternativknappar
Om användaren inte markerar en kryssruta eller alternativknapp skickas inget värde. Om användaren markerar en kryssruta eller alternativknapp skickas värdet ett (1) eller sant.
Vi kommer att ändra registreringsformulärets kod och inkludera en bockknapp som låter användaren godkänna användarvillkoren.
<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>
Visa formuläret ovan i en webbläsare.
Fyll i för- och efternamn.
Observera att kryssrutan Godkänn användarvillkoren inte har markerats.
Klicka på Skicka-knappen.
Du kommer att få följande resultat.
Klicka på baksidan av formulärlänken och markera sedan kryssrutan.
Klicka på Skicka-knappen.
Du kommer att få följande resultat.










