Pour créer un formulaire, il y a deux étapes importantes: d'abord connaître le CGI qui est employé par votre serveur (provider).
Un CGI est nécessaire pour traiter un formulaire, c'est un programme écrit dans un langage comme le C, le Pascal, Basic ou PERL, et qui se trouve dans le répertoire /cgi-bin/ de votre site FTP.
Si vous avez accès à ce répertoire, vous pouvez télécharger gratuitement des CGI déjà tout fait sur l'Internet (dont celui que vous cherchez). Vous pouvez essayer de demander des adresses à votre fournisseur, puisque c'est une question commune qui lui revient.
Si vous n'avez pas accès à ce répertoire (ce qui est le cas le plus courant), demandez à votre fournisseur d'accès Internet s'il peut vous donner un accès à un répertoire /cgi-bin pour que vous puissiez y mettre vos propres CGI (Notez que parfois, il faut payer un supplément monétaire par mois à votre fournisseur pour qu'il vous donne cet accès).
Mais plus simplement, je vous conseille d'employer le
programme de votre provider s'il en conseille un en particulier, ce qui
est le cas des providers importants.
La seconde étape est bien sûr de créer votre page formulaire en respectant bien l'ordre des lignes de codes.
Voici un exemple qui emploie le programme proposé par le provider SKYNET :
| Début
des codes réservés au programme CGI..................>
<FORM METHOD=POST
ACTION="http://users.skynet.be/cgi-bin/formd.cgi"
onsubmit="return formemail_Validator(this)"
name="formemail"> <TABLE
BORDER=1 CELLSPACING=0> |
Dans l'exemple que je vous donne (que j'emploie dans Page-Web), tous les champs "hidden" sont valides pour le CGI du provider Skynet. Si vous le désirez, vous pouvez consulter ceux qui concernent le provider Win. Notez que ces champs peuvent varier dans leur forme et/ou leur contenu d'un CGI à l'autre!
Vous devez toujours insérer vos éléments entre les balises :
<FORM> et </FORM>
Les 2 boutons "Effacer le questionnaire" et "Envoyer votre réponse" doivent être placés à la fin du formulaire.
Les autres boîtes apparaîtront dans l'ordre où vous les mettrez.
Dans l'exemple de mon formulaire, le champ CGI s'appelle (chez Skynet) "form.cgi", il peut s'appeler autrement chez votre provider et les lignes de codes (champs "hidden"), comme je vous l'ai déjà dit, peuvent être un peu différentes: normalement, votre provider doit vous donner les lignes de codes et le nom du CGI qu'il emploie.
Quand vous avez placé les lignes de codes correctes, le programme CGI de votre provider enverra les données sur votre mail avec les renseignements voulus, comme vous pouvez le voir ci-dessous:
- to = rouyer@page-web.com
- subject = Réponses WebExpert
- next = http://www.page-web.com/formulaire.html
- Nom = Auteur
- Email = info@page-web.com
- Site = http://www.levisiteur.com
La deuxième ligne, avec le champ <INPUT>, de nom "Origine" n'est là que pour vous permettre de connaître l'origine du formulaire envoyé : cela peut être pratique dans le cas où vous possédez plusieurs formulaires sur votre site...
Pour l'instant, c'est la formule (mailto)que
j'emploie et que je recommande, car si le visiteur a omis de donner son adresse e-mail ou si celle-ci
est erronée, il n'y a aucun moyen de connaître son adresse ! Par cette dernière
procédure par contre (mailto), comme c'est le programme de mail du visiteur (local) qui envoie le
message, on peut récupérer (REPLY) son adresse e-mail. L'inconvénient,
par contre, est que le visiteur qui emploie un PC sans programme de mail
installé ne peut employer cette dernière manière de procéder, mais cela
devient rare.
Pour être tout à fait complet, j'emploie parfois aussi une troisième méthode, qui emploie le système d'un lien e-mail simple, mais dans lequel il y a des codes particuliers qui sont introduits dans le contenu du message, qui est proposé dès l'ouverture du programme de mail.
On me pose souvent des questions pour insérer des scripts qui permettent de vérifier si un champ a bien été rempli, avant l'envoi du formulaire ? Voire, un choix dans une liste à puce ?
Pour cela, vous devez identifier les champs avec un nom (identifiant), pour que le ou les scripts puissent les reconnaître parmi les autres. Par exemple, le champ Nom, Email, ensemble de puces Envoi.
Voici un exemple de script à insérer dans le body, avant la balise <FORM> :
<script Language="JavaScript">
<!--
function formemail_Validator(theForm)
{
if (theForm.Nom.value == "")
{
alert("Tapez une valeur pour le champ \"Nom\".");
theForm.Nom.focus();
return (false);
}
if (theForm.Nom.value.length < 3)
{
alert("Tapez au moins 3 caractères dans le champ
\"Nom\".");
theForm.Nom.focus();
return (false);
}
if (theForm.Email.value == "")
{
alert("Tapez une valeur pour le champ \"Email\".");
theForm.Email.focus();
return (false);
}
if (theForm.Email.value.length < 2)
{
alert("Tapez au moins 2 caractères dans le champ \"Email\".");
theForm.Email.focus();
return (false);
}
var radioSelected = false;
for (i = 0; i < theForm.Envoi.length;
i++)
{
if (theForm.Envoi[i].checked)
radioSelected = true;
}
if (!radioSelected)
{
alert("Sélectionnez une des options \"Envoi\".");
return (false);
}
return (true);
}
//-->
</script>
Si les champs Nom, EMAIL, ou l'ensemble de puces Envoi ne sont pas remplis ou choisis, un message d'alerte le rappelle, et ne valide pas l'envoi du formulaire.
A cette fin, les attributs onsubmit="return formemail_Validator(this)" name="formemail" ont été ajoutés à la balise <FORM> pour que le script puisse y faire référence... Si vous ne voulez pas employer ce script, ces attributs ne sont pas nécessaires...
Voilà, j'espère que j'ai été assez complet. Maintenant, vous êtes capable de créer vos formulaires et c'est à vous de jouer...;-)
- Formulaire que j'appelle "rapide" et ou "classique" (CGI etc)
- Formulaire par "mailto"
- Formulaire de contact, avec validation de champs