PHP-registratieformulier met GET, POST-methoden met voorbeeld
Wat is vorm?
Wanneer u inlogt op een website of in uw mailbox, communiceert u met een formulier.
Formulieren worden gebruikt om input van de gebruiker te krijgen en deze ter verwerking naar de webserver te sturen.
Het onderstaande diagram illustreert het formulierverwerkingsproces.
Een formulier is een HTML-tag die grafische elementen van de gebruikersinterface bevat, zoals een invoerveld, selectievakjes, keuzerondjes, enzovoort.
Het formulier wordt gedefinieerd met behulp van de … tags en GUI-items worden gedefinieerd met behulp van formulierelementen zoals invoer.
Wanneer en waarom gebruiken we formulieren?
- Formulieren zijn handig bij het ontwikkelen van flexibele en dynamische applicaties die gebruikersinvoer accepteren.
- Formulieren kunnen worden gebruikt om reeds bestaande gegevens uit de database te bewerken
Maak een formulier
We zullen HTML-tags gebruiken om een formulier te maken. Hieronder vindt u de minimale lijst met dingen die u nodig heeft om een formulier te maken.
- Formuliertags openen en sluiten …
- Type formulierinzending POST of GET
- Inzendings-URL die de ingediende gegevens verwerkt
- Invoervelden zoals invoervelden, tekstvakken, knoppen, selectievakjes, etc.
De onderstaande code maakt een eenvoudig registratieformulier aan
<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>
Wanneer u de bovenstaande code in een webbrowser bekijkt, wordt het volgende formulier weergegeven.
HIER,
- … zijn de openings- en sluitingsformuliertags
- action=”registration_form.php” method=”POST”> specificeert de bestemmings-URL en het inzendingstype.
- Voornaam/Achternaam: zijn labels voor de invoervelden
- zijn invoervak-tags
- is de nieuwe regeltag
- is een verborgen waarde die wordt gebruikt om te controleren of het formulier is verzonden of niet
- is de knop die, wanneer erop wordt geklikt, het formulier ter verwerking naar de server verzendt
Het verzenden van de formuliergegevens naar de server
Het action-attribuut van het formulier specificeert de indienings-URL die de gegevens verwerkt. Het method attribuut specificeert het indieningstype.
PHP POST-methode
- Dit is de ingebouwde super globale arrayvariabele van PHP die wordt gebruikt om waarden op te halen die via de HTTP POST-methode zijn verzonden.
- De arrayvariabele is toegankelijk vanuit elk script in het programma; het heeft een mondiale reikwijdte.
- Deze methode is ideaal als u de formulierpostwaarden niet in de URL wilt weergeven.
- Een goed voorbeeld van het gebruik van de post-methode is bij het versturen van inloggegevens naar de server.
De syntaxis is als volgt.
<?php $_POST['variable_name']; ?>
HIER,
- “$_POST[…]” is de PHP-array
- “'variabele_naam'” is de naam van de URL-variabele.
PHP GET-methode
- Dit is de ingebouwde superglobale arrayvariabele van PHP die wordt gebruikt om waarden op te halen die zijn ingediend via de HTTP GET-methode.
- De arrayvariabele is toegankelijk vanuit elk script in het programma; het heeft een mondiale reikwijdte.
- Met deze methode worden de formulierwaarden in de URL weergegeven.
- Het is ideaal voor formulieren van zoekmachines, omdat gebruikers hiermee de resultaten kunnen markeren.
De syntaxis is als volgt.
<?php $_GET['variable_name']; ?>
HIER,
- “$_GET[…]” is de PHP-array
- “'variabele_naam'” is de naam van de URL-variabele.
GET versus POST-methoden
POST | Begin |
---|---|
Waarden niet zichtbaar in de URL | Waarden zichtbaar in de URL |
Heeft geen beperking van de lengte van de waarden, aangezien ze via de body van HTTP worden ingediend | Heeft een beperking op de lengte van de waarden, meestal 255 tekens. Dit komt omdat de waarden worden weergegeven in de URL. Let op: de bovengrens van de tekens is afhankelijk van de browser. |
Heeft lagere prestaties vergeleken met de Php_GET-methode vanwege de tijd die wordt besteed aan het inkapselen van de Php_POST-waarden in de HTTP-body | Heeft hoge prestaties vergeleken met de POST-methode dankzij de eenvoudige aard van het toevoegen van de waarden aan de URL. |
Ondersteunt veel verschillende gegevenstypen, zoals string, numeriek, binair enz. | Ondersteunt alleen tekenreeksgegevenstypen omdat de waarden in de URL worden weergegeven |
Resultaten kunnen niet als boek gemarkeerd worden | Resultaten kunnen als boek gemarkeerd worden vanwege de zichtbaarheid van de waarden in de URL |
Het onderstaande diagram toont het verschil tussen ontvangen en posten
Verwerken van de gegevens van het inschrijfformulier
Het registratieformulier verzendt gegevens naar zichzelf zoals gespecificeerd in het actieattribuut van het formulier.
Wanneer een formulier is ingediend, worden de waarden ingevuld in de $_POST super globale array.
We zullen de PHP isset-functie gebruiken om te controleren of de formulierwaarden zijn ingevuld in de $_POST-array en de gegevens te verwerken.
We zullen het registratieformulier aanpassen om de PHP-code op te nemen die de gegevens verwerkt. Hieronder vindt u de aangepaste code
<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="/nl/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>
HIER,
-
controleert of het verborgen veld form_subposed is ingevuld in de array $_POST[] en geeft een bedank- en voornaambericht weer.
Als het veld form_fobmitted niet is ingevuld in de $_POST[]-array, wordt het formulier weergegeven.
Meer voorbeelden
Eenvoudige zoekmachine
We zullen een eenvoudige zoekmachine ontwerpen die de PHP_GET-methode gebruikt als formulierinzendingstype.
Voor de eenvoud zullen we a gebruiken PHP If-instructie om de opbrengst te bepalen.
We zullen dezelfde HTML-code gebruiken voor het bovenstaande registratieformulier en er minimale wijzigingen in aanbrengen.
<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="/nl/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>
Bekijk bovenstaande pagina in een webbrowser
Het volgende formulier wordt getoond
Typ GET in hoofdletters en klik vervolgens op de verzendknop.
Het volgende wordt getoond
Het onderstaande diagram toont de URL voor de bovenstaande resultaten
Let op, de URL toont de waarde van search_term en form_submitted. Probeer iets anders in te voeren dan GET en klik vervolgens op de verzendknop en kijk welke resultaten u krijgt.
Werken met selectievakjes, keuzerondjes
Als de gebruiker geen selectievakje of keuzerondje selecteert, wordt er geen waarde verzonden. Als de gebruiker een selectievakje of keuzerondje selecteert, wordt de waarde één (1) of true verzonden.
We zullen de code van het registratieformulier aanpassen en een vinkje toevoegen waarmee de gebruiker akkoord kan gaan met de servicevoorwaarden.
<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="/nl/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>
Bekijk het bovenstaande formulier in een browser
Vul de voor- en achternaam in
Let op: het selectievakje 'Accepteer de servicevoorwaarden' is niet aangevinkt.
Klik op de verzendknop
U krijgt de volgende resultaten
Klik op de link 'Terug naar het formulier' en selecteer vervolgens het selectievakje
Klik op de verzendknop
U krijgt de volgende resultaten
Samenvatting
- Formulieren worden gebruikt om gegevens van de gebruikers te verkrijgen
- Formulieren worden gemaakt met behulp van HTML-tags
- Formulieren kunnen ter verwerking naar de server worden verzonden met behulp van de POST- of GET-methode
- Formulierwaarden die via de POST-methode worden ingediend, worden ingekapseld in de HTTP-body.
- Formulierwaarden die via de GET-methode worden verzonden, worden toegevoegd en weergegeven in de URL.