PHP-registratieformulier met GET, POST-methoden met voorbeeld

โšก Slimme samenvatting

Formulierverwerking in PHP legt gebruikersinvoer vast via HTML-formulieren en verwerkt deze op de server met behulp van de superglobals $_POST en $_GET. Deze handleiding bouwt een registratieformulier, legt de POST- en GET-methoden uit, vergelijkt ze en laat zien hoe velden, selectievakjes en zoekinvoer verwerkt kunnen worden.

  • ๐Ÿ“ Wat formulieren doen: Een HTML-formulier verzamelt gebruikersinvoer via velden zoals tekstvakken, selectievakjes en knoppen, en stuurt deze vervolgens naar een serverscript.
  • ๐Ÿ“ฌ POST-methode: $_POST verzendt waarden in de HTTP-body, keeping hen eruit URL, wat geschikt is voor inloggegevens en gevoelige data.
  • ๐Ÿ”— GET-methode: $_GET voegt waarden toe aan de URLZodat resultaten kunnen worden opgeslagen als bladwijzer, wat ideaal is voor zoekformulieren.
  • โ€‹ POST vs GET: POST heeft geen praktische lengtebeperking en ondersteunt veel gegevenstypen; GET is korter, accepteert alleen tekenreeksen en is zichtbaar.
  • โœ… Invoer verwerken: De functie isset() controleert of een veld is ingediend voordat het script de waarde ervan leest en gebruikt.
  • โ˜‘๏ธ Selectievakjes: Een selectievakje stuurt alleen een waarde door wanneer het is aangevinkt, dus isset() bevestigt of de gebruiker akkoord is gegaan met de optie of deze heeft geselecteerd.
  • ๐Ÿค– AI-assistentie: AI-tools kunnen een gevalideerd en veilig formulier genereren en helpen bij het diagnosticeren van de oorzaak van problemen met het verzenden van een formulier.

PHP-formulierenverwerking

Wat is vorm?

Wanneer je inlogt op een website of je e-mail, heb je te maken 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.

PHP-formulier

Een formulier is een HTML-tag die grafische gebruikersinterface-elementen bevat, zoals invoervelden, selectievakjes, keuzerondjes en meer.

Het formulier wordt gedefinieerd met behulp van de โ€ฆ Tags en GUI-elementen worden gedefinieerd met behulp van formulierelementen zoals input.

Wanneer en waarom gebruiken we formulieren?

  • Formulieren komen goed van pas bij de ontwikkeling van...ping Flexibele en dynamische applicaties die gebruikersinvoer accepteren.
  • Formulieren kunnen worden gebruikt om reeds bestaande gegevens in 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
  • Onderwerping URL die de ingediende gegevens zal verwerken
  • Invoervelden zoals invoervakken, tekstvelden, knoppen, selectievakjes en dergelijke.

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.

Maak een formulier

HIER,

  • โ€ฆ zijn de openings- en sluitingsformuliertags
  • action=โ€registration_form.phpโ€ method=โ€POSTโ€ specificeert de bestemming URL en het type inzending.
  • 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
  • Dit is de knop die, wanneer erop geklikt wordt, het formulier naar de server verzendt voor verwerking.

Het verzenden van de formuliergegevens naar de server

Het actiekenmerk van het formulier specificeert de indiening. URL die de gegevens verwerkt. Het attribuut `method` specificeert het type indiening.

PHP POST-methode

  • Dit is de ingebouwde PHP-superglobale arrayvariabele die wordt gebruikt om waarden op te halen die via de HTTP POST-methode worden verzonden.
  • De arrayvariabele is toegankelijk vanuit elk script in het programma; het heeft een mondiale reikwijdte.
  • Deze methode is ideaal wanneer u de formulierinzendingswaarden niet wilt weergeven in de URL.
  • Een goed voorbeeld van het gebruik van de POST-methode is het verzenden van inloggegevens naar de server.

De syntaxis is als volgt.

<?php
$_POST['variable_name'];
?>

HIER,

  • โ€œ$_POST[โ€ฆ]โ€ is de PHP-array
  • 'variabelenaam' is de naam van het formulierveld.

PHP GET-methode

  • Dit is de ingebouwde PHP-superglobale arrayvariabele die wordt gebruikt om waarden op te halen die via de HTTP GET-methode worden verzonden.
  • De arrayvariabele is toegankelijk vanuit elk script in het programma; het heeft een mondiale reikwijdte.
  • Deze methode geeft de formulierwaarden weer in de URL.
  • Het is ideaal voor zoekmachineformulieren, omdat gebruikers de resultaten hiermee kunnen bookmarken.

De syntaxis is als volgt.

<?php
$_GET['variable_name'];
?>

HIER,

  • โ€œ$_GET[โ€ฆ]โ€ is de PHP-array
  • โ€œ'variabele_naam'โ€ is de URL variabele naam.

GET versus POST-methoden

POST Begin
Waarden die niet zichtbaar zijn in de URL Waarden zichtbaar in de URL
Er is geen beperking op de lengte van de waarden, aangezien deze via de body van het HTTP-verzoek worden verzonden. Er geldt een beperking op de lengte van de waarden, meestal 255 tekens. Dit komt doordat de waarden worden weergegeven in de URLLet op: de maximale tekenlimiet is afhankelijk van de browser.
De prestaties zijn lager in vergelijking met de GET-methode vanwege de tijd die nodig is om de POST-waarden in de HTTP-body te verpakken. Heeft betere prestaties vergeleken met de POST-methode vanwege de eenvoudigere manier waarop de waarden worden toegevoegd. URL.
Ondersteunt veel verschillende gegevenstypen, zoals tekenreeksen, numerieke waarden, binaire waarden en meer. Ondersteunt alleen gegevenstypen zoals tekenreeksen, omdat de waarden worden weergegeven in de URL
Resultaten kunnen niet als bladwijzer worden opgeslagen. Resultaten kunnen worden opgeslagen als bladwijzer omdat de waarden duidelijk zichtbaar zijn. URL

Het onderstaande diagram laat het verschil zien tussen GET en POST.

GET versus POST-methoden

GET versus POST-methoden

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 verzonden, worden de waarden in de globale array $_POST geplaatst.

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 voor de gegevensverwerking toe te voegen. Hieronder staat 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="/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_submitted` in de `$_POST[]`-array is ingevuld en geeft een bedankbericht en de voornaam weer. Als het veld `form_submitted` niet is ingevuld in de `$_POST[]`-array, wordt het formulier weergegeven.

Meer voorbeelden

Eenvoudige zoekmachine

We gaan 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="/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 weergegeven.

Eenvoudige zoekmachine

Typ GET in hoofdletters en klik vervolgens op de verzendknop.

Het volgende zal worden getoond.

Eenvoudige zoekmachine

Het onderstaande diagram toont de URL voor de bovenstaande resultaten.

Eenvoudige zoekmachine

Merk op URL heeft de waarde van search_term en form_submitted weergegeven. Probeer iets anders dan GET in te voeren, klik vervolgens op de verzendknop en kijk welke resultaten je krijgt.

Werken met selectievakjes, keuzerondjes

Als de gebruiker geen selectievakje of keuzeknop aanvinkt, wordt er geen waarde verzonden. Als de gebruiker wel een selectievakje of keuzeknop aanvinkt, wordt de waarde รฉรฉn (1) of 'waar' 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="/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 bovenstaand formulier in een browser.

Werken met selectievakjes, keuzerondjes

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.

Werken met selectievakjes, keuzerondjes

Klik op de link 'Terug naar het formulier' en vink vervolgens het selectievakje aan.

Werken met selectievakjes, keuzerondjes

Klik op de verzendknop.

U krijgt de volgende resultaten.

Werken met selectievakjes, keuzerondjes

Veelgestelde vragen

$_GET leest waarden uit de URL De query-string $_POST leest waarden uit de request body, en $_REQUEST combineert GET-, POST- en cookiegegevens. Gebruik bij voorkeur de specifieke array, zodat je precies weet waar een waarde vandaan komt.

Vertrouw nooit op onbewerkte invoer. Valideer met `filter_var()` of regels voor elk veld en ontsnap aan de uitvoer met `htmlspecialchars()` om XSS te voorkomen. Gebruik voorbereide statements voor het schrijven naar de database om SQL-injectie te voorkomen.

Veelvoorkomende oorzaken zijn een formulier dat de GET-methode gebruikt in plaats van de POST-methode, ontbrekende naamkenmerken bij invoervelden en een verkeerde actie. URLOf een ontbrekende multipart enctype voor bestandsuploads. Controleer elk van deze punten aan de hand van uw formulier.

Ja. AI kan het HTML-formulier genereren, inclusief server-side validatie, CSRF-bescherming en ontsnapte uitvoer. RevBekijk de regels voor elk veld en controleer of de beveiligingscontroles overeenkomen met uw toepassing voordat u de applicatie implementeert.

Ja. Deel het formulier en de handler, en AI kan een methodefout, een ontbrekend naamkenmerk, een onjuist actiepad of een validatietak die de indiening blokkeert, opsporen en vervolgens de oplossing voorstellen.

Vat dit bericht samen met: