HTML interesse |
|
Ik begrijp niet direct waarom addslashes gebruikt wordt in jouw code. :/
De 'undefined errors' ontstaan omdat je niet eerst controleert of de elementen die je echo'd een waarde hebben.
In plaats van het formulier naar verwerk.php te submitten, zou je dit alles ook in één pagina kunnen afvangen. Je kan dan de $_POST waarden in de input-velden zetten zodat je bij errors niet steeds het formulier opnieuw hoeft in te vullen
Een héél simpel voorbeeld hiervan (formulier.php):
<?php
// eerst controleren of het formulier is gesubmit
if ( isset( $_POST['submit'] ) ) {
// valideren
// bij het niet valideren zetten we een error in de errors array
if ( empty( $_POST['name'] ) ) {
$errors['name'] = 'Je moet een naam invullen';
}
if ( empty( $_POST['email'] ) ) {
$errors['email'] = 'Je moet een e-mail invullen';
} else {
if ( ! filter_var( $_POST['email'], FILTER_VALIDATE_EMAIL ) ) {
$errors['email'] = 'Je email is ongeldig';
}
}
// controleren of er errors zijn
if ( empty( $errors ) ) {
// mail versturen
}
}
?>
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>Voorbeeld formulier</title>
</head>
<body>
<form method="post" action="formulier.php">
<label for="name">Naam:</label><br>
<input type="text" name="name" id="name" value="<?php echo filter_input( INPUT_POST, 'name', FILTER_SANITIZE_STRING ); ?>"><br>
<?php if ( ! empty( $errors ) && ! empty( $errors['name'] ) ) { ?>
<span style="color: red;"><?php echo $errors['name']; ?></span><br>
<?php } ?>
<label for="email">E-mail:</label><br>
<input type="email" name="email" id="email" value="<?php echo filter_input( INPUT_POST, 'email', FILTER_SANITIZE_EMAIL ); ?>"><br>
<?php if ( ! empty( $errors ) && ! empty( $errors['email'] ) ) { ?>
<span style="color: red;"><?php echo $errors['email']; ?></span><br>
<?php } ?>
<input type="submit" name="submit" value="Verstuur">
</form>
</body>
</html>
<?php // eerst controleren of het formulier is gesubmit if ( isset( $_POST['submit'] ) ) { // valideren // bij het niet valideren zetten we een error in de errors array if ( empty( $_POST['name'] ) ) { $errors['name'] = 'Je moet een naam invullen'; } if ( empty( $_POST['email'] ) ) { $errors['email'] = 'Je moet een e-mail invullen'; } else { if ( ! filter_var( $_POST['email'], FILTER_VALIDATE_EMAIL ) ) { $errors['email'] = 'Je email is ongeldig'; } } // controleren of er errors zijn if ( empty( $errors ) ) { // mail versturen } } ?> <!DOCTYPE html> <head> <meta charset="UTF-8"> <title>Voorbeeld formulier</title> </head> <body> <form method="post" action="formulier.php"> <label for="name">Naam:</label><br> <input type="text" name="name" id="name" value=" <?php echo filter_input ( INPUT_POST , 'name', FILTER_SANITIZE_STRING ); ?>"><br> <?php if ( ! empty( $errors ) && ! empty( $errors['name'] ) ) { ?> <span style="color: red;"> <?php echo $errors['name']; ?></span><br> <?php } ?> <label for="email">E-mail:</label><br> <input type="email" name="email" id="email" value=" <?php echo filter_input ( INPUT_POST , 'email', FILTER_SANITIZE_EMAIL ); ?>"><br> <?php if ( ! empty( $errors ) && ! empty( $errors['email'] ) ) { ?> <span style="color: red;"> <?php echo $errors['email']; ?></span><br> <?php } ?> <input type="submit" name="submit" value="Verstuur"> </form> </body> </html>
|