form verwerken en errors genereren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cunces v

cunces v

03/08/2009 17:25:00
Quote Anchor link
Hallo iedereen,

ik gebruik nu het volgende systeem om de input v/e form te controleren en fouten weer te geven.

als er een fout optreed in het verwerken v/h formulier include ik een html-pagina dat een nieuw form en een echo bevat van de foutmelding (post variabele).

Maar ik zou het nu anders willen doen. Nl: als er een fout optreed in het verwerken v/h formulier een header verzende naar een foutenpagina met in de header de fouten.

Is deze 2e een goed ontwerp? Of heeft iemand nog een ander goed ontwerp? Ik heb al js-beveiliging dus dat is uitgesloten.
 
PHP hulp

PHP hulp

19/05/2024 11:31:13
 
Dennis meijer

dennis meijer

03/08/2009 17:27:00
Quote Anchor link
kun je misschien een paar scripts laten zien zodat we weten wat je precies bedoelt?
 
Cunces v

cunces v

03/08/2009 17:31:00
Quote Anchor link
form met action="verwerk.php"

verwerk.php:
if (!$allesingevuld) {
$errormessage = genereerErrorMessage($reeks, $studentennr, $voornaam, $naam, $studentpaswoord, $studentpaswoordcheck, $email);
$_POST['errormessage'] = $errormessage;
include("register.php");}

}

!$allesingevuld is functie, alsook genereerErrorMessage.
register.php bevat dan die echo van errormessage (je verliest gen post-data met includes)

2e moet ik nog implementere als ik 'm doe.
 
Jan Koehoorn

Jan Koehoorn

03/08/2009 17:53:00
Quote Anchor link
Je kunt beter een form op dezelfde pagina verwerken. Hieronder een voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
    ini_set ('display_errors', 1);
    error_reporting (E_ALL | E_STRICT);

    require 'inc/formvoorbeeld_form.php';
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>PHPHulp | Verwerk Form</title>
</head>

<body>

    <?php
        echo $form;
    ?>


</body>
</html>


En het bestand dat bovenaan gerequired wordt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
    $form_ok
= false;
    $form = '
        <form method="post" action="formvoorbeeld.php">
        
            <div>
                <label for="naam">naam:</label>
                <input id="naam" name="naam" type="text" value="{naam}" />
                {naam_error}
            </div>
        
            <div>
                <label for="email">e-mail:</label>
                <input id="email" name="email" type="text" value="{email}" />
                {email_error}
            </div>
        
            <div>
                <input type="submit" value="verzenden" />
            </div>
        
        </form>
    '
;
    $required = array ('naam', 'email');
    $fields = array (
        '{naam}' => (isset ($_POST['naam'])) ? (trim ($_POST['naam'])) : (null),
        '{email}' => (isset ($_POST['email'])) ? (trim ($_POST['email'])) : (null)
    );

    $errors = array (
        '{naam_error}' => null,
        '{email_error}' => null
    );
    
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $form_ok = true;
        foreach ($required as $field) {
            if (empty ($fields['{' . $field . '}'])) {
                $errors['{' . $field . '_error}'] = '<span class="error"><strong>' . $field . '</strong> is een verplicht veld</span>';
                $form_ok = false;
            }
        }
    }

    
    $form = str_replace (array_keys ($fields), array_values ($fields), $form);
    $form = str_replace (array_keys ($errors), array_values ($errors), $form);
    
    if ($form_ok) {
        // verwerk de formgegevens hier
        $form = '
            <h3>Dankuwel voor het invullen van het formulier</h3>
            <pre>'
. print_r ($_POST, true) . '</pre>
        '
;
    }

?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.