Médiaforma

All posts tagged formulaire

Pour envoyer un e-mail à partir d’un script PHP, vous utiliserez la fonction mail() :

$resultat = mail(destin, titre, texte, de);

Où :

  • destin est l’adresse du destinataire du message ;
  • titre est le titre du message ;
  • texte est le texte (brut ou HTML) envoyé dans le corps du message ;
  • de est l’en-tête du message, composée des éléments suivants, séparés entre eux par un retour charriot (\n) :
    • L’adresse mail de l’émetteur du message ;
    • Le type MIME du message ;
    • Le type du contenu ;
    • Le charset utilisé dans le message.

Voici un exemple de code :

<?php
  $titre = "Envoi de mail par PHP";
  $texte = "<font color=\"red\">Ce mail a été envoyé depuis <b>un script PHP</b>.</font>";
  $destinataire="prenom.nom.@fai.com";
  $delapartde = "expediteur@fai.com";
  $from  = "From:".$delapartde."\n";
  $from .= "MIME-version: 1.0\n";
  $from .= "Content-type: text/html;
  charset= UTF-8\n";
  if (!mail($destinataire,$titre,$texte,$from))
    echo "Un problème s'est produit lors de l'envoi du message. Recommencez SVP.";
?>

Dans un premier temps, les données à transmettre à la fonction mail sont stockées dans les variables $titre, $destinataire, $texte et $from. Remarquez les diverses informations embarquées dans la variable $from :

  • le nom de l’expéditeur,
  • le type mime du message,
  • le type du message,
  • le type d’encodage du message.

Toutes ces informations sont séparées par des retours charriot.

Il ne reste plus qu’à envoyer le message avec la fonction mail. Si la valeur retournée par cette fonction est false, le mail n’a pas été envoyé. Dans ce cas, un message d’erreur est affiché.


Pour transmettre un fichier à un script PHP, vous devez mettre en place un formulaire spécial dans lequel l’attribut enctype est initialisé à multipart/form-data :

<form action="ouverture-fichier.php" method="post"
      enctype="multipart/form-data">
</form>

Voici le code complet d’un formulaire qui demande à l’utilisateur de choisir un fichier texte dans les unités de masse de son ordinateur :

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Ouverture d'un fichier par formulaire</title>
  </head>
  <body>
    <form action="ouverture-fichier.php" method="post"
          enctype="multipart/form-data">
      Choisissez un fichier texte (extension .txt)<br>
      <input type="file" name = "fichierTexte"><br>
      <input type="submit" value="Envoyer">
    </form>
  </body>
</html>

Dans la balise form, nous spécifions l’attribut enctype et nous l’initialisons à “multipart/form-data”. Ainsi, nous pourrons transmettre un fichier par le formulaire. L’utilisateur peut choisir un fichier dans ses unités de masse grâce à un champ input de type file.

Lorsque le bouton Envoyer est cliqué, le fichier choisi est communiqué au script fichier.php en utilisant la méthode post. Nous allons maintenant nous intéresser au script fichier.php.

Pour télécharger sur le serveur le fichier choisi dans le formulaire, vous utiliserez :

1)      Les informations contenues dans la variable superglobale $_FILES[] dont voici le détail :

Elément du tableau Signification
$_FILES[“fichierTexte”][“name”] Le nom original du fichier, tel qu’il a été défini sur la machine du client web.
$_FILES[“fichierTexte”][“type”] Le type MIME du fichier, si le navigateur a fourni cette information. Par exemple, “image/gif”.
$_FILES[“fichierTexte”][“size”] La taille, en octets, du fichier téléchargé.
$_FILES[“fichierTexte”][“tmp_name”] Le nom temporaire du fichier qui sera chargé sur la machine serveur.
$_FILES[“fichierTexte”][“error”] Le code d’erreur associé au téléchargement de fichier.

 

Dans ce tableau, on suppose que le nom du fichier à télécharger a été saisi dans un champ input de type file nommé fichierTexte.

 

2)      Vous utiliserez également la fonction move_uploaded_file() dont voici le gabarit :

move_uploaded_file(temp, nom);

Où temp est le nom du fichier à télécharger et nom est la destination du fichier téléchargé.

Voici le code utilisé pour sauvegarder le fichier choisi par l’utilisateur sur le serveur :

<?php
  if (isset($_FILES["fichierTexte"])) {
    $tmp_name = $_FILES["fichierTexte"]["tmp_name"];
    $name = $_FILES["fichierTexte"]["name"];
    move_uploaded_file($tmp_name, $name);
  }
?>

Si l’entrée fichierTexte existe dans le tableau superglobal $_FILES, le nom du fichier  et le nom temporaire du fichier sur le serveur sont récupérés en lisant le contenu des cellules name et tmp_name du tableau $_FILES[“fichierTexte”]. Ces valeurs sont stockées dans les variables $name et $tmp_name.

Pour effectuer le transfert du fichier depuis le client sur le serveur, il suffit maintenant d’exécuter la fonction move_uploaded_file en lui transmettant le nom temporaire du fichier et le nom original du fichier.

Pour rendre ce code plus robuste, vous pourriez :

  • tester si aucun code d’erreur n’a été émis concernant le fichier ;
  • vérifier que le fichier spécifié par l’utilisateur est bien un fichier texte ;
  • vérifier que la taille du fichier n’est pas trop imposante.

Voici le code à utiliser pour tenir compte de ces remarques :

<?php
  if (isset($_FILES["fichierTexte"]) AND $_FILES["fichierTexte"]["error"] == 0) {
    if (($_FILES["fichierTexte"]["size"]<10000) AND ($_FILES["fichierTexte"]["type"] == "text/plain")) {
      $tmp_name = $_FILES["fichierTexte"]["tmp_name"];
      $name = $_FILES["fichierTexte"]["name"];
      move_uploaded_file($tmp_name, $name);
    }
    else
      echo "Le fichier spécifié n'est pas un fichier texte ou sa taille dépasse les 10000 octets<br>";
  }
  else
    echo "Une erreur s'est produite pendant le téléchargement. Ressayez...";
  ?>

Si l’entrée fichierTexte existe dans le tableau superglobal $_FILES et si aucune erreur n’a été détectée pour cette entrée, le code peut s’exécuter.

Si la taille du fichier est inférieure à 10000 octets et si le fichier choisi est bien un fichier texte, alors, il peut être transmis au serveur.

Les données le concernant sont lues dans le tableau $_FILES et stockées dans les variables $name et $tmp_name, puis le fichier est uploadé sur le serveur avec la fonction move_uploaded_file.

Exécutons ce code dans WAMP Server. Nous choisissons un fichier texte dans les unités de masse de l’ordinateur et nous cliquons sur le bouton Envoyer. Le fichier est transmis au script fichier.php et le fichier est uploadé sur le serveur.

Vous pouvez vérifier que le fichier choisi dans les unités de masse se trouve maintenant sur le serveur. Reportez-vous à la section sur la gestion de fichiers sur le serveur pour voir comment ouvrir ce fichier et, par exemple, l’afficher dans une zone de texte éditable.


Définissez un formulaire qui comporte les éléments suivants :

  • Un champ de saisie de type texte pour saisir un prénom
  • Un champ de saisie de type texte pour saisir un nom
  • Un champ de saisie de type mot de passe pour saisir un mot de passe
  • Une liste déroulante contenant trois valeurs (<20 ans, 20 à 50 ans, >50 ans) pour saisir l’âge
  • Un champ de saisie multiligne pour saisir des observations
  • Un bouton d’envoi du formulaire et un bouton de remise à zéro du formulaire

Le formulaire devra être communiqué à la page traitement.php en utilisant la méthode POST.

Arrêtez la lecture et mettez-vous au travail. Vous pourrez poursuivre la lecture de l’article lorsque vous aurez terminé la saisie du code.

Solution

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Un formulaire</title>
  </head>
  <body>
    <form name="MonFormulaire" method="post" action="traitement.php">
      <label>Prénom</label>
      <input type="text" name="prenom">
      <br><label>Nom</label>
      <input type="text" name="nom">
      <br><label>Mot de passe</label>
      <input type="password" name="mdp">
      <br><label>Age</label>
      <select name="age">
        <option><20 ans</option>
        <option>20 à 50 ans</option>
        <option>>50 ans</option>
      </select>
      <br><label>Observations</label>
      <br><textarea cols="40" rows="4" name="observations"></textarea>
      <br><br><input type="submit" name="Nom" value="Envoyer">
      <input type="reset" name="Nom" value="Annuler">
    </form>
  </body>
</html>



Vous devez fournir un moyen à vos visiteurs de vous contacter. La première idée qui vient à l’esprit est d’indiquer votre adresse e-mail dans un article ou une page. Cette technique fonctionne et est très simple à mettre en place. Malheureusement, c’est une porte ouverte pour tous les robots qui parcourent jour et nuit le Web. En quelques jours, l’adresse indiquée recevra un grand nombre de spams dont il sera difficile de vous séparer.

Mais alors, devez-vous renoncer à fournir un contact à vos visiteurs ?

Bien sûr que non, mais la technique à utiliser est totalement différente : vous devez mettre en place un formulaire de contact. Si votre thème n’en contient pas déjà un, je vous conseille d’installer l’extension Contact Form 7.

Cliquez sur Extensions puis sur Ajouter. Tapez Contact Form 7 dans la zone de texte Rechercher et cliquez sur Chercher les extensions. Cliquez sur le lien Installer maintenant de l’extension Contact Form 7 et confirmez votre intention en cliquant sur OK.

Cliquez enfin sur Activer l’extension pour rendre l’extension opérationnelle.

Cliquez sur Réglages pour en savoir un peu plus sur l’extension. Un formulaire intitulé Contact Form1 est déjà disponible. Cliquez sur son lien Modifier pour voir son contenu et le personnaliser.

Vérifiez que le formulaire correspond à ce que vous recherchez et, si nécessaire, modifiez-le en agissant dans les groupes d’options Formulaire, Email et Messages.

Un code de raccourci est affiché dans la partie supérieure de la page.

Sélectionnez ce code et placez-le dans le presse-papiers en appuyant sur Ctrl + C.

Pour créer un formulaire de contacts, il vous suffit maintenant de coller le contenu du presse-papiers dans un article, une page ou un Widget. A titre d’exemple, nous allons utiliser un Widget.

Cliquez sur Apparence puis sur Widget. Faites glisser le Widget Texte dans la zone Colonne principale. Tapez Formulaire de contact dans la zone de texte Titre. Cliquez dans la zone de texte du Widget et appuyez sur Ctrl + V pour y coller le contenu du presse-papiers. Cliquez sur Enregistrer pour sauvegarder le Widget puis sur Fermer pour le fermer.

Il ne vous reste plus qu’à aller voir le résultat en vous rendant sur le site :