Regnery.net Internet

HTML CSS PHP MYSQL JQuery SEO – internetoplossingen

Formulier – script

In PHP kun je heelveel doen als je de werking van formulieren begrijpt. Je hebt veel varianten hoe je met PHP een formulier kunt verwerken of afhandelen. Onderstaand voorbeeld is een mogelijkheid om een formulier te verwerken.

Script formulier

In dit script is een fout verwerking opgenomen. Via $errors[] = “…” vul je een array met foutmeldingen. Voordat je het formulier definitief verwerkt, controleer je eerst of er foutmeldingen zijn. Via de functie show_errors($errors) kun je de foutmeldingen weergeven.

Om het formulier bezoekersvriendelijk te houden, zorgt het script ervoor dat reeds ingevulde waarden onthouden worden. Via het attribuut value=”…” en een stuk PHP script, onthoudt het formulier wat de bezoeker heeft ingevuld.

Om te voorkomen dat het formulier dubbel wordt ingediend, heeft het formulier bij succesvol verwerken van de informatie een redirect naar zichzelf. Daarmee voorkom je dat het formulier dubbel kan worden ingediend. Hier zijn ook andere manieren voor te bedenken, maar deze werkt simpel en doeltreffend.

[ad]

PHP formulier afhandeling

<?php
$errors = array();
function show_errors($errors) {
$showerror = array();
foreach($errors as $error) {
$showerror[] = '<li>'.$error.'</li>';
}
return '<ul>'.implode('', $showerror).'</ul>';
} 
if(isset($_POST['submit'])){
$naam = mysql_real_escape_string(strip_tags($_POST['naam']));
$wachtwoord = mysql_real_escape_string(strip_tags($_POST['wachtwoord']));

if(empty($naam)) {
$errors[] = "Naam is verplicht. Vul hier een waarde in.";
} 
if(empty($wachtwoord)) {
$errors[] = "Wachtwoord is verplicht. Vul hier een waarde in.";
} 
if(strlen($naam) > 32) {
$errors[] = "Naam is te lang, niet meer dan 32 tekens gebruiken alstublieft.";
} 
if(strlen($wachtwoord) < 6) {
$errors[] = "Wachtwoord moet tenminste 6 tekens omvatten.";
}
if(empty($errors)) {
header("location: formulier.php");
exit();
}
}
?>
<html>
<head>
<title>Voorbeeld formulier afhandelen in PHP</title>
<style type="text/css">
#formcontainer ul { list-style-type: none; }
</style>
</head>
<body>
<?php
if (empty($errors) === FALSE) {
echo show_errors($errors);
}
?>

<form method="post" action="">
<div id="formcontainer">
<ul>
<li>Naam:</li>
<li><input type="text" name="naam" value="<?php if(isset($_POST['naam'])) echo $_POST['naam']; ?>" /></li>
<li>Wachtwoord:</li>
<li><input type="text" name="wachtwoord" value="<?php if(isset($_POST['naam'])) echo $_POST['wachtwoord']; ?>" /></li>
<li><input type="submit" name="submit" value="submit" /></li>
</ul>
</div>
</form> 
</body>
</html>

In het script is het invulveld voor een wachtwoord op text gezet. Dit is puur voor lesdoeleind gedaan. Normaal zul je daar natuurlijk een password invulveld van maken.