YBET

Rue Albert 1er, 7

6810 Pin - Chiny

Route Arlon - Florenville

(/fax: 061/32.00.15

Les formations sur Internet

YBET   Créer son site Contact

10.A. Exercice PHP: un petit formulaire de contact pour votre site

1. Le formulaire - 2. Vérification des données entrées - 3. Transfert dans la base de donnée MySQL - 4. Envoi à votre adresse mail - 5. Le développement complet.

Les différentes précédentes parties de cette formation nous permettent maintenant de commencer quelques exercices comme un simple formulaire de contacts en PHP - MySQL (mises à jours, inscriptions aux news, ...) à insérer sur votre site Internet. Il est volontairement "dépouillé", vous pourrez le compléter.

L'énoncé:

J'ai volontairement limité le nombre de champs à 2. Il n'y a pas de listes de choix, ... ceci va faciliter la création du formulaire

La table doit être au préalable créée dans EasyPhp (mais la fonction mail ne fonctionne pas) ou directement sur votre hébergement Internet.

Les champs

Nous n'utilisons pas de clés primaires, index, ...

1. Le formulaire

Comme le fichier contact.php doit être auto-invocant, le formulaire, méthode POST, est affiché en PHP (mais ce n'est pas obligatoire ici). Pour cela, nous allons attribuer à une variable $form l'ensemble du contenu, sans oublier les \ devant les " et ensuite affichée ce texte.

Code html du formulaire

Remarquez que nous lui donnons une valeur par défaut via l'option value: la zone NOM reprend le texte nom, la zone mail reprend la valeur "Votre adresse mail". Ce n'est pas obligatoire, sauf que les tests ci-dessous seront modifiés.

1. Vérification des valeurs entrées.

La partie ci-dessus s'insère au-dessus du formulaire. Les valeurs entrées par l'utilisateur sont directement modifiées pour supprimer les blancs et insérer le caractère \ devant les guillemets et apostrophes par la fonction addslashes.

Si la valeur envoyée est égale à la valeur par défaut, un message d'erreur s'affiche. Les tests sur l'adresse mail vérifient simplement si elle n'est pas nulle et si le caractère @ existe, suivi de caractères. Le chapitre 13 utilise des fonctions supplémentaires de vérification. 

if (isset($_POST['B1']))
{
// teste les valeurs.
$nom=trim(addslashes($_POST['nom']));
$mail=trim(addslashes($_POST['mail']));
$tableau=array();
$tableau=Explode("@",$mail,2);
// echo $tableau[0];
if ($nom=="" || $nom=="Nom")
{
echo "Veuillez rentrer un nom";
}elseif ($mail==""){
echo "Rentrez une adresse mail";
}elseif (!isset($tableau[1])) {
echo"Rentrez une adresse valide";
}else{
// entrée des valeurs dans la table MySQL, envoi des données à une adresse mail.

}
}

3. Transfert dans la base de donnée

Le transfert des données vers la base de données ne se fait que si les données sont validées. Rien de bien spécial, nous ne vérifions même pas si l'utilisateur existe déjà (mais vous pouvez le faire comme exercice).

if(!mysql_connect('localhost','root')){
Echo'Connection Impossible';
exit();
}
Mysql_select_db('ybet');
$requete="insert formulaire SET nom='$nom', mail='$mail'" ;
$resultat=mysql_query($requete);

4. Envoi dans votre boîte mail

La dernière fonction est d'envoyer les données par mail. Elle utilise la fonction PHP mail(destinataire, sujet, message, headers). Cette fonction renvoie true si le message est bien envoyé, false sinon. Les différents composants doivent au préalable être définis dans les variables.

// envoi par mail
$date=date('Ymd');
$message=date("d/m/Y H:m:s\n")."\n Nouveau contact: "."\n nom: ".$nom."\n Adresse mail: ".$mail;
$entetes .= "From: user@site.be < user@site.be >\n"; $entetes .= "Reply-to: user@site.be\n"; $entete .= "X-Mailer:php/" . phpversion() . "\n"; $entetes .= "X-Priority: 3\n"; $entetes .='Content-Transfer-Encoding: 8bit'; $entetes = "From: contact@site.be\nReply-to: contact@site.be\n";
$sujet="Nouveau contact ".$nom;
$webmaster=('contact@site.be');
mail($webmaster,$sujet,$imail,$entetes, '-fuser@site.be')

Elle vient à la suite de l'entrée des données dans la base de donnée.

Remarque: la variable $entete a été largement modifiée par rapport à la fonction standard suite à des blocages d'envoi à partir de serveurs OVH.En premier, l'adresse doit être intégrée dans le nom de domaine. Ensuite, dans la fonction mail, ajout de -fuser@site.be

Remarques: La fonction mail ne fonctionne pas sous Easyphp en local et doit se faire sur un serveur. Les différentes adresses mail doivent être corrigées selon votre propre adresse mail.

5. Le fichier complet

Pourquoi utiliser un formulaire en php plutôt que son code en HTML? Dans ce cas ci, on aurait très bien pu le faire en HTML. Dans la pratique, l'utilisation du PHP permet de reprendre en valeur par défaut une variable PHP en utilisant des auto invoquants avec gestion des erreurs. Le problème de ce formulaire, c'est que si la personne oublie de rentrer le dernier champ (par exemple), il devra de nouveau entrer les valeurs dans les premiers champs s'il recommence. Dans la suite du cours, cette possibilité sera systématiquement utilisée.

Vous pouvez télécharger le formulaire complet ici.

En complémentaire:

Formulaire auto-invoquant avec gestion d'erreurs

Calculs en javascript dans les formulaires utilisation de javascript dans les formulaires: calculs et opérations diverses.

Importer des images dans un formulaire: importation, vérification et réduction de la taille

11. > Création automatique de tables (développement)
23. > Méthode de suivi des utilisateurs (suite formation)

<10 . Gérer les tables en PHP

Modification: 07/07/2015: correction de l'envoi de mails en fonction des blocages OVH