PHP-registreringsformular ved hjælp af GET, POST-metoder med eksempel
Hvad er Form?
Når du logger ind på et websted eller i 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 inputboks, afkrydsningsfelter, radioknapper osv.
Formen defineres 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, når man udvikler 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
- Indsendelses-URL, der behandler de indsendte data
- Indtastningsfelter såsom inputfelter, tekstområder, knapper, afkrydsningsfelter osv.
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 destinationswebadressen 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 der klikkes på den, sender formularen til serveren til behandling
Indsendelse af formulardata til serveren
Formularens handlingsattribut angiver den indsendelses-URL, der behandler dataene. Metodeattributten angiver indsendelsestypen.
PHP POST metode
- Dette er den indbyggede PHP super globale array-variabel, der bruges til at få værdier indsendt 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 formularpostværdierne i URL'en.
- Et godt eksempel på brug af post-metoden er, når du sender login-oplysninger til serveren.
Den har følgende syntaks.
<?php $_POST['variable_name']; ?>
HER,
- "$_POST[...]" er PHP array
- "'variable_name'" er URL-variabelnavnet.
PHP GET metode
- Dette er den indbyggede PHP super globale array-variabel, der bruges til at få værdier indsendt 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'en.
- 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
- "'variable_name'" er URL-variabelnavnet.
GET vs POST metoder
POST | GET |
---|---|
Værdier er ikke synlige i URL'en | Værdier, der er synlige i URL'en |
Har ingen begrænsning af længden af værdierne, da de indsendes via HTTP-teksten | Har begrænsning på længden af værdierne normalt 255 tegn. Dette skyldes, at værdierne vises i URL'en. Bemærk, at den øvre grænse for tegn afhænger af browseren. |
Har lavere ydeevne sammenlignet med Php_GET-metoden på grund af tid brugt på at indkapsle Php_POST-værdierne i HTTP-kroppen | Har høj ydeevne sammenlignet med POST-metoden på grund af den enkle natur at tilføje værdierne i URL'en. |
Understøtter mange forskellige datatyper såsom streng, numerisk, binær osv. | Understøtter kun strengdatatyper, fordi værdierne vises i URL'en |
Resultater kan ikke bogmærkes | Resultater kan bogmærkes på grund af synligheden af værdierne i URL'en |
Nedenstående diagram 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 $_POST super globale array.
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 til at inkludere PHP-koden, 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="/da/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 form_submitted-felt er blevet udfyldt i $_POST[]-arrayet og viser en tak- og fornavnsmeddelelse.
Hvis feltet form_fobmitted 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-erklæring 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="/da/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 stort bogstav, og klik derefter på indsend-knappen.
Følgende vil blive vist
Diagrammet nedenfor viser URL'en til ovenstående resultater
Bemærk, at URL'en har vist værdien af søgeterm og form_indsendt. Prøv at indtaste noget andet end GET, og klik derefter på send-knappen og se, hvilke resultater du får.
Arbejde med afkrydsningsfelter, alternativknapper
Hvis brugeren ikke vælger et afkrydsningsfelt eller alternativknap, indsendes ingen værdi, hvis brugeren vælger et afkrydsningsfelt eller alternativknap, indsendes værdien en (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="/da/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 efternavne
Bemærk, at afkrydsningsfeltet Accepter servicevilkår ikke er markeret.
Klik på knappen Send
Du får følgende resultater
Klik på tilbage til formularlinket, og marker derefter afkrydsningsfeltet
Klik på knappen Send
Du får følgende resultater
Resumé
- Formularer bruges til at få data fra brugerne
- Formularer oprettes ved hjælp af HTML-tags
- Formularer kan indsendes til serveren til behandling ved hjælp af enten POST- eller GET-metoden
- Formularværdier indsendt via POST-metoden er indkapslet i HTTP-kroppen.
- Formularværdier indsendt via GET-metoden tilføjes og vises i URL'en.