Forms verwerken met PHP
Hallo en in deze tutorial laat ik je zien hoe je formulieren die je gemaakt hebt in HTML kunt verwerken met PHP. In deze tutorial gaan we het echter niet hebben over de veiligheid. Hier komt later nog een tutorial en een geheugensteuntje-blad voor.In dit voorbeeld gaan we ook kijken hoe je nakijkt of een formulier is verzonden. En dat doen we toevallig als eerstes.
Je zult merken dat zo goed als elke mogelijkheid in een formulier meestal op dezelfde manier wordt opgevraagd. Enkel checkboxen doen anders.
/
Nakijken of een formulier is verzonden
Voordat je kan nakijken wat de verzonden waardes zijn moet je eerst nakijken of het verzonden is. I n theorie heb je iets soortgelijks als dit binnen de FORM-tags in je HTML staan:<input type="submit" name="submit" value="Klik hier voor te verzenden" />
if isset($_POST["submit"]))
{
//actie's indien verzonden
}
<?php
if isset($_POST["submit"]))
{
echo("Het formulier is verzonden");
}
?>
<input type="submit" name="submit" value="Klik hier voor te verzenden" />
Tekstvelden, Wachtwoordvelden, Textarea's, Radiobuttons en SELECT
Je kan tekstvelden, wachtwoordvelden,textarea's,... allemaal op dezelfde manier opvragen. In dit voorbeeld is dit een tekstveld. Let in onderstaande HTML-code ook eventjes naar het name-atribuut:<input type="text" name="gebruikersnaam" />
$username = $_POST["gebruikersnaam"]
Alle verzonden items via POST worden opgeslagen in de array $_POST. Deze bestaat natuurlijk enkel als er in de HTML-code vermeld is dat er met POST de data verzonden moet worden en niet met GET.
Bij de radiobuttons is er niet altijd eentje aangeduid. Om dit op te lossen moet elke optie een waarde (value) hebben! en dan moet je tijdens het nakijken van het verzonden formulier kijken of de variabele leeg is "". Zoja... is er geen radiobutton aangeduid!
Checkboxen verwerken
Om na te kijken of een checkbox aangeduid is moet je nakijken of hij meeverzonden is, oftewel dat hij (volgens php) bestaat. Hiervoor gebruik je de volgende code als in de HTML er een checkbox is met als name-attribuut pizza<?php
if ($_POST["pizza"] == "on")
{$pizza = true; }
else
{$pizza = false; }
?>
<?php
if ($_POST["pizza"] == "on")
{$pizza = ":D"; }
else
{$pizza = ":("; }
echo($pizza);
?>
<form method="post">
<input type="checkbox" name="pizza">Pizza<input type="submit" />
</form>
Je kan ook gebruik maken van een function die dit doet...
function checboxchecked($arg1) {
if ($_POST[$arg1] == "on")
{$ret = true; }
else
{$ret = false; }
return $ret;
}
Vervolgens gebruik je deze code om na te kijken of hij aangekruisd is...
<?php
if (checkboxchecked("pizza") == true)
{$pizza = ":D"; }
else
{$pizza = ":("; }
echo($pizza);
?>
<form method="post">
<input type="checkbox" name="pizza">Pizza<input type="submit" />
</form>
Hoe alles goed verwerken
In deze (eerder genoemde) tutorial liet ik onderaan een voorbeeldcode zien. In het laatste gedeelte van deze tutorial laat ik je zien hoe je dit formulier kunt verwerken. Er is een lichte fout-controle ingevoerd maar deze is niet effectief voor hackersaanvallen indien je met een MySQL-database werkt!<?php
function checboxchecked($arg1) {
if ($_POST[$arg1] == "on")
{$ret = true; }
else
{$ret = false; }
return $ret;
}
if (isset($_POST["verzend"]))
{
$gebruikersnaam = $_POST["gebruikersnaam"];
$wachtwoord1 = $_POST["password1"];
$wachtwoord2 = $_POST["password2"];
$email = $_POST["email"];
$regreason = $_POST["reason"];
$geslacht = $_POST["geslacht"];
$intresse = $_POST["intresse"];
$newsletter = checkboxchecked("newsletter");
}
?>
<form method="get" action="#">
<table><tbody>
<tr><td>Gebruikersnaam:</td><td><input type="text" name="username" /></td></tr>
<tr><td>Wachtwoord:</td><td><input type="password" name="password1" /></td></tr>
<tr><td>Wachtwoord (herhalen):</td><td><input type="password" name="password2" /></td></tr>
<tr><td>E-mailadres:</td><td><input type="text" name="email" /></td></tr>
<tr><td>Reden van registratie:</td><td><textarea name="reason" cols="25" rows="3"></textarea></td></tr>
<tr><td>Geslacht:</td><td><input type="radio" name="geslacht" value="m" />Man<br />
<input type="radio" name="geslacht" value="f" />Vrouw
</td></tr>
<tr><td>Ik ben geïntereseerd in...</td><td>
<select name="intresse">
<option value="bouwdozen">Bouwdozen</option>
<option value="computergames">Computerspellen</option>
<option value="poppen">De poppenspeelset</option>
<option value="kleurplaten">Kleurplaten voor kinderen</option>
</select>
</td></tr>
<tr><td>Nieuwsbrief:</td><td><input type="checkbox" name="newsletter" />Stuur mij mails van de nieuwsbrief</td></tr>
<tr><td>Verstuur het formulier:</td><td><input type="submit" name="verzend" value="Verzend" />
</td></tr>
</tbody></table>
</form>
