Bonjour,

J'ai trouvé dans le dernier numéro de Lunix Pratique un formulaire qui s'auto-vérife en PHP :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<!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" xml:lang="fr" lang="fr">
<head>
    <title>Vérification de Formulaire PHP</title>
 
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
 
    <style type="text/css">
        h1, h2, h3 { margin: 2px; }
        h3 { background-color: #ccc; }
 
        #errors { border: 2px dashed red; margin: 15px 0; }
        #errors p { margin: 2px; }
    </style>
</head>
<body>
<h1>Traitement d'un formulaire en PHP</h1>
 
<?php
// Déclaration des fonctions de vérification
// Vérification simple de la validité d'un email
// on considère qu'un email est une chaine composée de str1@str2.str3
// les sous-chaines str1, str2 et str3 ne peuvent être vides
function is_email($email)
{
    // séparation des chaines de part et d'autre du @
    // $str est un tableau
    $str = explode("@", $email);
    // la taille du tableau doit être nécessairement 2 (1 seul arobas)
    // str1 => $str[0]
    // str2.str3 => $str[1]
    if (sizeof($str) != 2) {
        return FALSE;
    } else {
        // séparation des chaines du domaine, de part et d'autre du .
        $dom = explode(".", $str[1]);
        if (sizeof($dom) != 2) {
            return FALSE;
        } else {
            return TRUE;
        }
    }
}
 
 
// Si 'envoi' n'est pas vide c'est que le formulaire a été validé
if (!empty($_POST["envoi"])) {
    // Vérification du champ 'nom'
    // Vérification si le champ est vide
    if (empty($_POST["nom"])) {
        $tab_errors["nom"] = "Le champ 'Nom' est requis !";
    } else {
        // Vérification si la longueur du champ 'nom' est comprise entre 5 et 50 caractères
        if (strlen($_POST["nom"]) < 5 or strlen($_POST["nom"]) > 50) {
            $tab_errors["nom"] = "Le taille du champ 'nom' doit être comprise entre 5 et 50 caractères !";
        }
    }
 
    // Vérification du champ 'prenom'
    // Vérification si le champ est vide
    if (empty($_POST["prenom"])) {
        $tab_errors["prenom"] = "Le champ 'Prénom' est requis !";
    } else {
        // Vérification si la longueur du champ 'prenom' est comprise entre 5 et 50 caractères
        if (strlen($_POST["prenom"]) < 5 or strlen($_POST["prenom"]) > 50) {
            $tab_errors["prenom"] = "Le taille du champ 'Prénom' doit être comprise entre 5 et 50 caractères !";
        }
    }
 
    // Vérification du champ 'adresse'
    // Vérification si la longueur du champ 'adresse' est comprise entre 50 et 255 caractères
    if (strlen($_POST["adresse"]) > 255) {
        $tab_errors["adresse"] = "Le taille du champ 'Adresse' ne peut excéder 255 caractères !";
    }
 
    // Vérification du champ 'codepostal'
    if (!empty($_POST["codepostal"]) and !is_numeric($_POST["codepostal"])) {
        $tab_errors["codepostal"] = "Le champ 'Code Postal' doit être numérique !";
    }
 
    // Vérification du champ 'ville'
    // Vérification si la longueur du champ 'ville' est inférieure à 50 caractères
    if (strlen($_POST["ville"]) > 50) {
        $tab_errors["ville"] = "Le taille du champ 'Ville' ne peut excéder 50 caractères !";
    }
 
    // Vérification du champ 'e-mail'
    // vérification si le champ est vide
    if (empty($_POST["email"])) {
        $tab_errors["email"] = "Le champ E-Mail est requis !";
    } else {
        if (!is_email($_POST["email"])) {
            $tab_errors["email"] = "Le champ 'E-Mail' n'est pas valide !";
        }
    }
}
 
// Si le tableau $tab_errors n'est pas vide, c'est que le formulaire a déjà été envoyé et qu'il contient des erreurs.
if (!empty($tab_errors)) {
    // Affichage des erreurs du formulaires
    echo "<div id=\"errors\">";
    echo "<h3>Le formulaire contient des erreurs :</h3>";
    // parcours du tableau des erreurs et affichage des libellés
    foreach ($tab_errors as $field => $field_error) {
        echo "<p><strong>" . $field . ":</strong> " . $field_error . "</p>";
    }
    echo "</div>";
} else {
    // Si le tableau $tab_errors est vide, et que $_POST["envoi"] n'est pas vide, c'est que le formulaire et ses données sont valides.
    // on procède alors au traitement
    if (!empty($_POST["envoi"])) {
        echo "<h3>Traitement du Formulaire...</h3>";
        # instructions du traitement....
        # insertion dans une bdd, envoi d'un mail, inscription, ...
        // $form_res est une variable permettant de dire que le formulaire est valide et que le traitement de celui-ci s'est déroulé sans problème.
        $form_res = TRUE;
    }
}
 
// Si $form_res n'est pas VRAI on affiche le formulaire
if (!$form_res) {
?>
 
<!-- à noter l'initialisation des valeurs des champs du formulaire avec les résultats déjà saisis en cas de problème de validation du formulaire -->
<h2>Veuillez renseigner vos coordonnées :</h2>
<form action="verif_form.php" method="post">
<p><label for="nom">Nom :</label> <input type="text" id="nom" name="nom" value="<?php echo $_POST["nom"]; ?>" /></p>
<p><label for="prenom">Prénom :</label> <input type="text" id="prenom" name="prenom" value="<?php echo $_POST["prenom"]; ?>" /></p>
<p><label for="adresse">Adresse :</label> <input type="text" id="adresse" name="adresse" value="<?php echo $_POST["adresse"]; ?>" /></p>
<p><label for="codepostal">Code Postal :</label> <input type="text" id="codepostal" name="codepostal" value="<?php echo $_POST["codepostal"]; ?>" /></p>
<p><label for="ville">Ville :</label> <input type="text" id="ville" name="ville" value="<?php echo $_POST["ville"]; ?>" /></p>
<p><label for="email">E-Mail :</label> <input type="text" id="email" name="email" value="<?php echo $_POST["email"]; ?>" /></p>
<p>
    <input type="hidden" name="envoi" value="1" />
    <input type="submit" name="BtnSubmit" value="Valider" /><input type="reset" name="BtnClear" value="Annuler" />
</p>
</form>
 
<?php
}
?>
 
</body>
</html>
Je voudrais qu'une fois vérifié et validé, il soit envoyé à une url. Comment puis-je faire ? (j'ai bien trouvé mail() pour l'envoyer par mail...)

D'avance merci !