Classe pour poser et valider un formulaire

Description

Bonjour,

Il peut être fastidieux d'écrire un formulaire et le gérer correctement.
Je voudrais donc rendre l'utilisation du formulaire HTML plus simple.

La 1ère version permet de gérer les balises input et textarea de base, et
gère aussi les tricks antibot 'de base' à savoir un token (clé de cyptage),
une constante 'SALT', ceci pour crypter les noms des champs de manière dynamique,
et un piège à bot : un textarea masqué (par style css) qui doit rester vide pour
validation du formulaire.

L'usage doit rester simple mais aussi flexible. Un petit exemple vaut mieux
qu'un long discour :

// je défini mon formulaire avec des attributs 'en vrac'
$cond = array(
	'nom' => array('type'=>'text', 'name'=>'nom', 'size'=>18, 'maxlength'=>20, 'value'=>'', 'label'=>array('txt'=>'Nom : ')),
	'email' => array('type'=>'text', 'name'=>'email', 'size'=>22, 'maxlength'=>40, 'value'=>'', 'label'=>array('txt'=>'Email : ')),
    'url' => array('type'=>'text', 'name'=>'url', 'size'=>25, 'maxlength'=>50, 'value'=>'http://', 'label'=>array('txt'=>'URL : ')),
	'texto' => array('type'=>'textarea', 'name'=>'texto', 'cols'=>60, 'rows'=>4, 'wrap'=>'virtual', 'value'=>''),
	'submit' => array('type'=>'submit', 'name'=>'Submit', 'value'=>'Envoyer',
		'label'=>array('txt'=>'Nom et message obligatoires.'))
);
			
$myForm = new form($cond); // form();

if($myForm->validateForm()) {
    // formulaire OK
    if (empty($myForm->nom) || empty($myForm->texto))
    {
        // des zones manquantes, msg d'erreur
    }
    else
    {
        // insérer le msg en bdd avec $myForm->getValues
        // ou chaque élément $myForm->url $myForm->email etc
    }
}

// afficher le formulaire 'en vrac' si le CSS suffit à la mise en forme:
echo $myForm;

// ou afficher les éléments 1 par 1 avec $myForm->getField($field)
// mais dans ce cas on doit gérer les balises <form ... ></form>



3e solution pour 'écrire' le formulaire, c'est d'étendre cette classe et
surcharger la méthode getForm, comme dans l'exemple comment.form.php
cette 2nd classe ajoute des fonctionnalités supplémentaires:
antiflood
captcha

Une prochaine version prendra en charge les checkbox et radio, ainsi que les
listes déroulantes. Et les fieldset / legend.

Et bien sur, toute suggestion est bienvenue!

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.