PHP-registreringsformulär med GET, POST-metoder med exempel
Vad är Form?
När du loggar in på en webbplats eller i din postlåda 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 objekt i användargränssnittet som inmatningsruta, kryssrutor, radioknappar etc.
Formuläret definieras med hjälp av … Taggar och GUI-objekt definieras med hjälp av formulärelement som indata.
När och varför använder vi formulär?
- Formulär kommer väl till pass när man utvecklar flexibla och dynamiska applikationer som accepterar användarinput.
- Formulär kan användas för att redigera redan befintliga 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ämnings-URL som kommer att behandla de inlämnade uppgifterna
- Inmatningsfält som inmatningsrutor, textområden, knappar, kryssrutor etc.
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 måladressen 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
Åtgärdsattributet för formuläret anger inlämnings-URL som bearbetar data. Metodattributet anger inlämningstypen.
PHP POST-metoden
- Detta är den inbyggda PHP super global array-variabeln som används för att få värden som skickas in via HTTP POST-metoden.
- Arrayvariabeln kan nås från vilket skript som helst i programmet; den har en global räckvidd.
- Denna metod är idealisk när du inte vill visa formulärpostvärdena i URL:en.
- Ett bra exempel på att använda postmetoden är när du skickar in inloggningsuppgifter till servern.
Den har följande syntax.
<?php $_POST['variable_name']; ?>
HÄR,
- "$_POST[...]" är PHP-array
- "'variable_name'" är URL-variabelns namn.
PHP GET-metoden
- Detta är den inbyggda PHP super global array-variabel som används för att få värden som skickas in 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:en.
- Det är idealiskt för sökmotorformulär eftersom det låter användarna bokmärka resultaten.
Den har följande syntax.
<?php $_GET['variable_name']; ?>
HÄR,
- "$_GET[...]" är PHP-arrayen
- "'variable_name'" är URL-variabelns namn.
GET vs POST-metoder
| POST | FÅ |
|---|---|
| Värden syns inte i URL:en | Värden som syns i URL:en |
| Har ingen begränsning av längden på värdena eftersom de skickas via HTTP-kroppen | Har en begränsning på längden på värdena vanligtvis 255 tecken. Detta beror på att värdena visas i URL:en. Observera att den övre gränsen för tecken beror på webbläsaren. |
| Har lägre prestanda jämfört med Php_GET-metoden på grund av tid som går åt till att kapsla in Php_POST-värdena i HTTP-kroppen | Har hög prestanda jämfört med POST-metoden på grund av den enkla karaktären av att lägga till värden i URL:en. |
| Stöder många olika datatyper som sträng, numerisk, binär etc. | Stöder endast strängdatatyper eftersom värdena visas i URL:en |
| Resultat kan inte bokmärkas | Resultat kan bokmärkas på grund av synligheten av värdena i URL:en |
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 ifylls värdena i $_POST super global array.
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 behandlar data. Nedan är 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="/sv/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 form_submitted-fältet har fyllts i $_POST[]-matrisen och visar ett tack- och förnamnsmeddelande.
Om form_fobmitted-fältet inte har fyllts i $_POST[]-matrisen, 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="/sv/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 ovanstående sida i en webbläsare
Följande formulär kommer att visas
Skriv GET med versaler och klicka sedan på knappen Skicka.
Följande kommer att visas
Diagrammet nedan visar webbadressen för ovanstående resultat
Observera att webbadressen har visat värdet för sökterm och form_submitted. Försök att ange något annat än GET och klicka sedan på knappen Skicka och se vilka resultat du kommer att få.
Arbeta med kryssrutor, alternativknappar
Om användaren inte väljer en kryssruta eller alternativknapp skickas inget värde, om användaren väljer 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="/sv/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 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å knappen Skicka
Du kommer att få följande resultat
Klicka på tillbaka till formulärlänken och markera sedan kryssrutan
Klicka på knappen Skicka
Du kommer att få följande resultat
Sammanfattning
- Formulär används för att få data från användarna
- Formulär skapas med HTML-taggar
- Formulär kan skickas till servern för bearbetning med antingen POST- eller GET-metoden
- Formulärvärden som skickas via POST-metoden är inkapslade i HTTP-kroppen.
- Formulärvärden som skickas in via GET-metoden läggs till och visas i URL:en.










