Tom's Guide > Forum > Programmation > formulaire casse-tete

formulaire casse-tete

Forum Programmation : formulaire casse-tete

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

bonjour, j'ai besoin d'un pro pour un probleme de formulaire.
je reçoit les numeros de variables de mon tableau $projets, comment faire pour qu'ils m'envoie les valeurs en texte normal ? merci.

Code :
  1. <?php
  2. /*
  3. Envoi de formulaire sans javascript avec pièce jointe
  4. proposé par Pierre Pesty http://dev.ppan.net/
  5. Variables à modifier selon paramètres et besoins :
  6. */
  7. # le nom de page (et titre) change en fonction des événements
  8. $pageName = "Formulaire de contact";
  9. # en-tête de l'objet du mail (option: vide)
  10. $entete = "[Pacific bounounours]";
  11. # email du webmestre
  12. $destinataire = "bounounours@hotmail.fr";
  13. # envoi en copie carbone (option: vide)
  14. $email_cc = "";
  15. # envoi en copie cachée (option: vide)
  16. $email_bcc = "";
  17. # emplacement de la feuille de styles
  18. $cssform = "pacific.css";
  19. # options de pièce jointe
  20. # répertoire temporaire d'upload (option: vide ou $rep inconnu)
  21. $rep = "upload/"; // ne pas oublier le slash /
  22. # taille max de la pièce jointe (multiple de 1024)
  23. $taillemax = 1024000;
  24. # menu déroulant pour l'objet (option: vide)
  25. # ajout d'option : 'n'=>'Choix 1', 'n+1'=>'Choix 2',
  26. # la première ligne (optionnelle) impose un choix
  27. $objets = "";
  28. # menu déroulant pour le projet (option: vide)
  29. # ajout d'option : 'n'=>'Choix 1', 'n+1'=>'Choix 2',
  30. # la première ligne (optionnelle) impose un choix
  31. $projets = array(
  32.     0 => 'Choisissez',
  33.     1 => 'Maison individuelle',
  34.     2 => 'Immeuble residentiel',
  35.     3 => 'Logements sociaux',
  36.     4 => 'Batiment industriels',
  37.     5 => 'Autres',
  38. );
  39. # choix du mode de confirmation d'envoi
  40. # true ou 1 = redirection vers $pageconfirme
  41. # false ou 0 = affichage du résumé du message
  42. $redirection = false;
  43. # si $redirection = true ou 1
  44. # page vers laquelle rediriger l'internaute
  45. $pageconfirme = "index.php";
  46. /*
  47. fin des modifications
  48. */
  49. $erreur = false;
  50. $message = false;
  51. $focus = 0;
  52. # l'utilisateur a validé le formulaire
  53. if ($_POST) {
  54.     # vérification des champs requis (Nom, Objet, Message, Email ou Tel)
  55.             if (!$_POST['Projet']) {
  56.         $erreur = "Merci de renseigner le projet";
  57.         $focus = 9;
  58.     }
  59.     if (empty($_POST['Message'])) {
  60.         $erreur = "Merci de renseigner le message";
  61.         $focus = 1; // modification couleur du champ de saisie concerné
  62.     }
  63.     if (!$_POST['Objet']) {
  64.         $erreur = "Merci de renseigner l'objet";
  65.         $focus = 2;
  66.     }
  67.     if (empty($_POST['Nom'])) {
  68.         $erreur = "Merci de renseigner votre nom";
  69.         $focus = 3;
  70.     }
  71.     # email et tel sont vides : pas glop !
  72.     if (empty($_POST['Email']) && empty($_POST['Tel'])) {
  73.         $erreur = "Saisir email et/ou téléphone SVP";
  74.         $focus = 4;
  75.     }
  76.     # vérification de l'email non vide
  77.     elseif (!empty($_POST['Email'])) {
  78.         if(!preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])*\.([a-z]{2,4})$`',$_POST['Email'])) {
  79.             $erreur = "Email non conforme";
  80.             $_POST['Email'] = "";
  81.             $focus = 5;
  82.         }
  83.     # vérification du téléphone (sans espaces)
  84.     } elseif (!is_numeric(str_replace(" ","",$_POST['Tel']))) {
  85.         $erreur = "Téléphone non conforme";
  86.         $_POST['Tel'] = "";
  87.         $focus = 6;
  88.     }
  89.     # pièce jointe (nouveauté 12.10.2005)
  90.     $piecejointe = "";
  91.     if(!$erreur && strlen($_FILES['Fichier']['name'])) {
  92.         $fichier = $_FILES['Fichier'];
  93.         # upload du fichier sur le serveur
  94.         $temp = $fichier['tmp_name'];
  95.         $name = $fichier['name'];
  96.         $size = $fichier['size'];
  97.         $destination = $rep.$name;
  98.         if($size > $taillemax)
  99.             $erreur = "Taille du fichier $name > ".(int)($taillemax/1024)." Ko";
  100.         elseif(!@is_uploaded_file($temp))
  101.             $erreur = "Téléchargement du fichier $name impossible";
  102.         elseif(!@move_uploaded_file($temp, $destination))
  103.             $erreur = "Problème de transfert du fichier $name";
  104.         if($erreur) $focus = 7;
  105.         else {
  106.             # lecture du type de fichier
  107.             if(!function_exists('mime_content_type')) {
  108.                 function mime_content_type($fichier) {
  109.                     # ajouter autant de combinaisons que souhaitées
  110.                     $mime = array(
  111.                     '.gif' => 'image/gif',
  112.                     '.jpg' => 'image/jpeg',
  113.                     '.psd' => 'image/x-xwd',
  114.                     '.png' => 'image/png',
  115.                     '.txt' => 'text/plain',
  116.                     '.doc' => 'application/msword',
  117.                     '.xls' => 'application/vnd.ms-excel',
  118.                     );
  119.                     # par défaut
  120.                     if(!$type = $mime[strrchr($fichier,'.')]) $type = "application/octet-stream";
  121.                     return $type;
  122.                 }
  123.             }
  124.             /*
  125.                 pour utiliser mime_content_type()
  126.                 éditer le fichier php.ini et enlever le commentaire sur :
  127.                 extension=php_mime_magic.dll
  128.                 sous Windows ajouter ces 2 lignes :
  129.                 mime_magic.debug = On
  130.                 mime_magic.magicfile = "c:\chemin_du_fichier\magic.mime"
  131.                 NB : fonction non activée chez OVH
  132.             */
  133.             $mimetype = mime_content_type($destination);
  134.             # lecture et conversion du fichier
  135.             if($openf = @fopen($destination, "rb" )) {
  136.                 $fichier = fread($openf, filesize($destination));
  137.                 @fclose($openf);
  138.                 # encodage norme RFC 2045
  139.                 $piecejointe = chunk_split(base64_encode($fichier));
  140.             } else {
  141.                 $erreur = "Problème de lecture du fichier $name";
  142.                 $focus = 7;
  143.             }
  144.         }
  145.     }
  146.     # pas d'erreur donc on continue
  147.     if(!$erreur) {
  148.         # traitement du tableau $_POST qui contient les paires name => value
  149.         foreach($_POST as $key => $value) {
  150.             # la deuxième partie du test passe les champs non désirés dans le mail
  151.             # pour passer d'autres champs les séparer par |
  152.             if (strlen($value) && !eregi("(MAX_FILE_SIZE)", $key))
  153.                 $message_final .= "$key : ".strip_tags($value)."\n";
  154.         }
  155.         # formatage du message de confirmation affiché (option)
  156.         # conversion des sauts de ligne et des caractères spéciaux
  157.         $message = ereg_replace("(\n|\r|\r\n)", "<br>", htmlentities($message_final));
  158.         # si $objets est un tableau : Objet = select donc index = $_POST['Objet']
  159.         if(is_array($objets))
  160.             $objet = "$entete ".$objets[$_POST['Objet']];
  161.         # sinon Objet = input donc en français dans le texte !
  162.         else
  163.             $objet = "$entete ".$_POST['Objet'];
  164.             # si $projets est un tableau : Projet = select donc index = $_POST['Projet']
  165.         if(is_array($projets))
  166.             $projet = "$entete ".$projets[$_POST['Projet']];
  167.         # sinon Projet = input donc en français dans le texte !
  168.         else
  169.             $projet = "$entete ".$_POST['Projet'];
  170.         # si l'email n'est pas renseigné on le remplace par celui
  171.         # du destinataire, en ajoutant une alerte au message
  172.         $final_mail = $_POST['Email'];
  173.         if(empty($_POST['Email'])) {
  174.             $final_mail = $destinataire;
  175.             $message_final .= "\nNe pas répondre par mail : email absent.\n";
  176.         }
  177.         # en-têtes
  178.         $headers = "From: ".$final_mail;
  179.         if(strlen($email_cc))
  180.             $headers .= "\nCC: ".$email_cc;
  181.         if(strlen($email_bcc))
  182.             $headers .= "\nBCC: ".$email_bcc;
  183.         # hôte expéditeur
  184.         $message_final .= "Hôte : ".gethostbyaddr($_SERVER['REMOTE_ADDR']);
  185.         # si pièce jointe
  186.         if(strlen($piecejointe)) {
  187.             $boundary = "/-------".md5(uniqid(rand()))."-------/"; // séparateur
  188.             $headers .= "\nMIME-Version: 1.0\nContent-Type: multipart/mixed; boundary=\"$boundary\"\n";
  189.             $message_final =
  190.                 "This is a multi-part message in MIME format.\n--$boundary\n".
  191.                 "Content-Type: text/plain; charset=ISO-8859-1\n".
  192.                 "Content-Transfer-Encoding: 7bit\n\n".
  193.                 "$message_final\n\n--$boundary\n".
  194.                 "Content-Type: $mimetype; name=\"$name\"\n".
  195.                 "Content-Transfer-Encoding: base64\n".
  196.                 "Content-Disposition: attachment; filename=\"$name\"\n\n".
  197.                 "$piecejointe\n--".
  198.                 $boundary."--\n";
  199.         }
  200.         # envoi du mail
  201.         if (@mail($destinataire, stripslashes($projet), stripslashes($message_final), $headers)) {
  202.             @unlink($destination); // suppression de la pièce jointe
  203.             if($redirection) {
  204.                 # NB : traiter $_GET['mailOK'] dans $pageconfirme
  205.                 @header("Location: ".$pageconfirme."?mailOK=1" );
  206.                 exit;
  207.             }
  208.             $pageName = "Le mail a été envoyé !";
  209.          } else {
  210.             $pageName = "Echec !";
  211.             $erreur = "Echec de l'envoi ! Merci d'essayer encore SVP";
  212.          }
  213.     } else {
  214.         $pageName = "Erreur de saisie !";
  215.     } // if(!$erreur)
  216. } // if ($_POST)
  217. ?>



Code :
  1. <?        if ($projets) { ?>
  2.                 <label for="projet">Projet:</label><select name='Projet' <? if($focus == 9) echo "class=\"focus\"";?> id="projet">
  3. <?
  4. foreach($projets as $key => $val) {
  5.     echo "                  <option value='$key'";
  6.     // vérifier si une des entrées a été choisie
  7.     if($key == $_POST['Projet']) echo " selected";
  8.     echo ">$val\n";
  9. }
  10. ?>
  11.                 </select>
  12. <?        } else { ?>
  13.                 <label for="projet">Projet:</label><input id="projet" <? if($focus == 9) echo "class=\"focus\"";?> name="Projet" maxlength="60" value="<? echo htmlentities($_POST['Projet'], ENT_QUOTES)?>">
  14. <?        } ?>

:-o

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.
Tom's Guide > Forum > Programmation > formulaire casse-tete
Aller à :

Il y a 408 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens